设计模式---桥接模式(C++实现)

    xiaoxiao2021-03-25  73

    /************************************************************************************** Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装, 聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点 是把抽象(abstraction)与行为实现(implementation)分离开来, 从而可以保持各部分的独立性以及应对它们的功能扩展。 适用于: 桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。 实现方法: 创建一个抽象类定义接口,然后不同的子类去实现此接口   然后定义一个使用此功能函数的类,在这个类中通过传递来的指针对象去操作它的函数   这里的桥接桥接的都是同一个函数(所以才会叫桥接) 通过中间人搭桥(车这个中间人) **************************************************************************************/ #include <iostream> using namespace std; //需要把“安装发动机”这个事,做很好的分解;把抽象 和 行为实现 分开 //发动机是一个名词语,专门抽象成一个类;类中含有一个成员函数,安装发动机 class Engine; class Car { public: Car(Engine *pengine) { m_engine = pengine;} virtual void installEngine() = 0; protected: Engine *m_engine; }; class Engine { public: virtual void installEngine() = 0; }; class Engine4000 : public Engine { public: virtual void installEngine() { cout << "安装发动机 Engine4000" << endl;} }; class Engine3500 : public Engine { public: virtual void installEngine() { cout << "安装发动机 Engine 3500" << endl;} }; class BMW7 :public Car { public: BMW7(Engine *p) : Car(p) { } virtual void installEngine()//注意车的安装  和 发动机的安装 不同之处 { cout << "BMW7 "; m_engine->installEngine(); } protected: private: }; void main() { Engine4000 *e4000 = new Engine4000; //创建一个发动机,然后返回发动机的基类指针 BMW7 *bmw7 = new BMW7(e4000); //然后将此指针传递给,想要安装此发动机的车,基类和派生类中都初始化此发动机 bmw7->installEngine();//然后车子在调用安装发动机(在此函数中完成发动机的安装(在自己的地盘操纵别人的函数)) delete bmw7; delete e4000; system("pause");

    }

    来源:传智博客---王保明

    转载请注明原文地址: https://ju.6miu.com/read-39107.html

    最新回复(0)