设计模式之桥接模式
2016-05-16 20:01
399 查看
/article/5940521.html
桥接模式
特点:
多对多的关系(多维元素在变化),仅用继承实现不太合理。Bridge用于将表示和实现解耦,两者可以独立的变化.
角色:
Abstraction::Operation():定义要实现的操作接口。在Abstraction类中维护一个Implement类指针(成员变量),需要采用不同的实现方式的时候只需要传入不同的Implement派生类就可以了。
Implement::OperationImp()
RefinedAbstraction::Operation()
ConcreteImplement::OperationImp()
桥接就是实现Operation()的定义(在Abstraction中)和Operation()的实现(在Implement中)实现解耦和。
桥接模式
特点:
多对多的关系(多维元素在变化),仅用继承实现不太合理。Bridge用于将表示和实现解耦,两者可以独立的变化.
角色:
Abstraction::Operation():定义要实现的操作接口。在Abstraction类中维护一个Implement类指针(成员变量),需要采用不同的实现方式的时候只需要传入不同的Implement派生类就可以了。
Implement::OperationImp()
RefinedAbstraction::Operation()
ConcreteImplement::OperationImp()
桥接就是实现Operation()的定义(在Abstraction中)和Operation()的实现(在Implement中)实现解耦和。
class Engine; class Car{//Abstraction public: Car(Engine* en){ m_en=en; } virtual void installEngine()=0; protected: Engine* m_en; }; class Engine{//Implement public: virtual void InstallEngine()=0; }; class Engine4400:public Engine{//ConcreteImplement public: void InstallEngine(){ cout<<"Install 4400 engine."<<endl; } }; class Engine4300:public Engine{ public: void InstallEngine(){ cout<<"Install 4300 engine."<<endl; } }; class BM:public Car{//RefinedAbstraction public: 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; }
相关文章推荐
- java发送地址(url)如何隐藏.action
- 使用boost.asio时遇到的一个小问题
- ARP协议
- 使用autoconf和automake生成Makefile文件
- 马云,王健林,马化腾是否是社会主义的合理存在?
- C# 虚方法
- Java---基于TCP协议的相互即时通讯小程序
- 第十一周【项目4- 教师兼干部类】
- 用logrotate管理每日增长的日志
- linux关于readlink函数获取运行路径的小程序
- Java---基于TCP协议的相互即时通讯小程序
- boost---shared_ptr笔记
- CSDN Latex 一些数学符号
- Python - 两圆相交求交点坐标
- kill -HUP pid
- MacOS虚拟机安装VMware tools 在主机与虚拟机之间共享文件和剪贴板
- JFrame中设置背景图片
- JTextField判断幸运数
- gcc&makefile
- 用C++实现堆排序