转载:C++设计模式之Bridge模式 http://www.cnblogs.com/chain2012/archive/2011/01/17/1937528.html
2011-10-11 10:35
1056 查看
一、功能
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构图
三、示例代码
四、实例
(1)创建可以在X Window System和IBM的Presentation Manager系统中都可以使用的窗口。(书上的例子)
Bridge的魅力在于抽象和实现之间是松散的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImp、TransientWindow+PMWindowImp四种组合。
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构图
三、示例代码
namespace DesignPattern_Bridge { // class Implementor class Implementor { public: virtual void OperationImp() = 0; }; // class ConcreteImplementorA class ConcreteImplementorA : public Implementor { public: virtual void OperationImp() { } }; // class ConcreteImplementorB class ConcreteImplementorB : public Implementor { public: virtual void OperationImp() { } }; // class Abstraction class Abstraction { public: void Operation(Implementor* imp) { assert(imp) ; imp->OperationImp(); } }; } //客户端代码: { using namespace DesignPattern_Bridge ; Abstraction obj ; Implementor *impa = new ConcreteImplementorA() ; Implementor *impb = new ConcreteImplementorB() ; obj.Operation(impa) ; //第一种实现方法 obj.Operation(impb) ; //第二种实现方法 }
四、实例
(1)创建可以在X Window System和IBM的Presentation Manager系统中都可以使用的窗口。(书上的例子)
Bridge的魅力在于抽象和实现之间是松散的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImp、TransientWindow+PMWindowImp四种组合。
相关文章推荐
- 转载:C++设计模式之Observer(观察者)模式 http://www.cnblogs.com/chain2012/archive/2011/01/24/1943322.html
- java常用设计模式(转载http://www.cnblogs.com/hnrainll/archive/2011/12/29/2305582.html)
- .Net中的设计模式——从实例谈OOP、工厂模式和重构 http://www.cnblogs.com/wayne-ivan/archive/2006/09/07/496920.html
- 设计模式网站 http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
- 设计模式http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121547.html
- 【C++设计技巧】C++中的RAII机制 http://www.cnblogs.com/gnuhpc/archive/2012/12/04/2802307.html
- Android应用视觉效果设计技巧(转载http://www.cnblogs.com/hanyonglu/archive/2012/03/02/2376451.html)
- MySQL 请选择合适的列! 转载(http://www.cnblogs.com/baochuan/archive/2012/05/23/2513224.html)
- [转-来自啊泰]推模式下dataset1下显示的是"...未找到项目..." 问题的解决[补充] [http://www.cnblogs.com/babyt/archive/2005/04/15/138588.html]
- C++:STL标准入门汇总(http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html)
- 消息总线设计系列之 - 调停者模式 --拷贝自http://www.cnblogs.com/netcasewqs/archive/2008/05/16/1200926.html
- WPF企业内训全程实录(下) 转载 http://www.cnblogs.com/KnightsWarrior/archive/2010/12/09/1900832.html
- Matlab 文件操作(转载http://www.cnblogs.com/longdouhzt/archive/2013/01/29/2881749.html)
- 异或转载http://www.cnblogs.com/this-543273659/archive/2011/08/30/2159819.html
- linux下select使用--转载http://www.cnblogs.com/moonvan/archive/2012/05/26/2518881.html
- 在Asp.net MVC中使用Asp.net Ajax --转载http://www.cnblogs.com/Nimeux/archive/2008/08/17/1269907.html
- trie 转载(来源于http://www.cnblogs.com/njuzyc/archive/2012/01/25/2329332.html)
- eclipse中安装ADT插件的最简单的方法转载自http://www.cnblogs.com/go-onxp/archive/2012/05/22/android.html
- C++中的内存管理 (转自:http://www.cnblogs.com/drwilliam/archive/2005/11/12/274937.html)
- 重提URL Rewrite(转载:http://www.cnblogs.com/JeffreyZhao/archive/2008/01/12/Url-Rewrite-1.html)