今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接。
(一)意图——将抽象部分和它的实现部分分离,使它们都可以独立地变化。
适用于从多维度描述的类型,拆解开来,使其能沿着各维度独立变化。脱耦。
(二)动机——解决继承机制带来的不足。
1)扩展抽象不方便。扩展时要重新定义一个新的类。
2)继承机制使得客户代码需要重新编译。
为解决以上两个问题,使用桥接的方式使得抽象类和它的实现分离,使得它们可以按照自己的方式独立变化。
(三)结构——抽象和实现分离。
以下是桥接模式的示意图:
(四)优点
1)分离接口及其实现部分。将Abstraction和Implementor分离有助于降低对实现部分编译时刻的依赖性,当改变一个实现类时,并不需要重新编译Abstraction 和它的客户程序,保证了一个类库的不同版本之间的二进制兼容性;接口和实现分离有助于分层,产生更好的结构化系统——抽象化层和实现层,系统的高层只要知道Abstraction 和Implementor 即可。
2)提高可扩充性。可以独立对Implementor 和Abstraction 进行扩充。
3)实现细节对客户透明。可以对客户隐藏实现细节,例如共享Implementor 对象以及相应的引用技术机制。
(五)补充。
1)有一个以上构件时使用桥梁模式比较好。
2)创建正确的实现对象。缺省实现对象;代理实现对象。
(六)参考。
http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html
http://blog.csdn.net/hguisu/article/details/7529194
http://blog.csdn.net/yhmhappy2006/article/details/7227017
《程序员面试宝典》P246 ——设计模式的思想描述蜡笔和毛笔的不同。