wordpress仿站步骤,互联网发展趋势分析,python 可以做网站吗,重庆节点建筑设计咨询有限公司桥接模式
概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后…桥接模式
概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后续继续扩展车的类型或者引擎的话, 那类的数量就爆炸了, 如下图所示
class Car
class ElectricalBigCar : Car
class ElectricalMiddleCar : Car
class ElectricalSmallCar : Car所以我们不要过度使用继承, 可以优先考虑拆分, 我们将引擎类单独拆分出来, 然后Car类包含引擎类, 这样就会大大减少类的数量 代码
class Engine
{
public:virtual void start() 0;
};class ElectricalEngine : public Engine
{
public:void start() override{cout electrical engine start endl;}
};class HybridEngine : public Engine
{
public:void start() override{cout hybrid engine start endl;}
};class FuelEngine : public Engine
{
public:void start() override{cout fuel engine start endl;}
};class Car
{
private:Engine* e;
public:Car(Engine* _e) : e(_e) {};virtual void start() 0;void run(){e-start();start();}
};class SmallCar : public Car
{
public:SmallCar(Engine* e) : Car(e) {};void start(){cout small car start endl;}
};class MiddleCar : public Car
{
public:MiddleCar(Engine* e) : Car(e) {};void start(){cout middle car start endl;}
};class BigCar : public Car
{
public:BigCar(Engine* e) : Car(e) {};void start(){cout big car start endl;}
};int main()
{BigCar* bc new BigCar(new FuelEngine());bc-run();return 0;
}执行结果 设计思想 桥接模式的设计思想就是, 不要过度使用继承而是优先拆分某些部件使用组合的方式来扩展功能。