设计模式之桥接模式

来源:互联网 发布:梦幻西游 for mac 编辑:程序博客网 时间:2024/05/29 15:48

http://www.cnblogs.com/jiese/p/3164940.html

桥接模式

特点:

多对多的关系(多维元素在变化),仅用继承实现不太合理。Bridge用于将表示和实现解耦,两者可以独立的变化.


角色:

Abstraction::Operation():定义要实现的操作接口。在Abstraction类中维护一个Implement类指针(成员变量),需要采用不同的实现方式的时候只需要传入不同的Implement派生类就可以了。

Implement::OperationImp()

RefinedAbstraction::Operation()

ConcreteImplement::OperationImp()


桥接就是实现Operation()的定义(在Abstraction中)Operation()的实现(在Implement中)实现解耦和。


class Engine;class Car{//Abstractionpublic:Car(Engine* en){m_en=en;}virtual void installEngine()=0;protected:Engine* m_en;};class Engine{//Implementpublic:virtual void InstallEngine()=0;};class Engine4400:public Engine{//ConcreteImplementpublic:void InstallEngine(){cout<<"Install 4400 engine."<<endl;} };class Engine4300:public Engine{public:void InstallEngine(){cout<<"Install 4300 engine."<<endl;} };class BM:public Car{//RefinedAbstractionpublic:BM(Engine* en):Car(en){}//子类的构造函数void installEngine(){cout<<"we are BM."<<endl;m_en->InstallEngine();}};class Jeep:public Car{public:Jeep(Engine* en):Car(en){}//子类的构造函数void installEngine(){cout<<"we are Jeep."<<endl;m_en->InstallEngine();}};

int main(){Car* car=NULL;Engine* p=NULL;p=new Engine4400;car=new BM(p);car->installEngine();delete car;delete p;cout<<"-----------------------------"<<endl;p=new Engine4300;car=new Jeep(p);car->installEngine();delete p;delete car;return 0;}



0 0
原创粉丝点击