桥接模式是将抽象部分(abstraction)与实现(implementation)部分分离(解耦合),使他们可以独立的变化。
车安装发动机:不同型号的车,安装不同型号的发动机。
将"车安装发动机"这个抽象和实现进行分离,两个名字就设计两个类。
class Engine { public: virtual void InstallEngine() = 0; }; class Engine4400cc : public Engine { public: virtual void InstallEngine() { std::cout<<"4400cc 发动机"<<std::endl; } }; class Engine4500cc : public Engine { public: virtual void InstallEngine() { std::cout<<"4500cc 发动机"<<std::endl; } }; class Car { public: Car(Engine *engine) { this->m_engine = engine; } virtual void installEngine() = 0; private: Engine *m_engine; };
class WBM5 : public Car { public: WBM5(Engine *engine) : Car(engine) { ; } virtual void installEngine() { m_engine->installEngine(); } }
Engine *engine = NULL; WBM5 *wbm5 = NULL; engine = new Engine4400cc(); wbm5 = new WBM5(engine); wbm5->installEngine();
delete wbm5;
delete engine;