今年5月的时候制定goal的时候提到了要看一本设计模式的书,结果到现在了还啥也没看。决定每天看一点,学习的文章来自网站http://sourcemaking.com/design_patterns/ 主要是按自己的理解翻译记录一下,可能错误会比较多。
最近半年开发的项目都是跨PC和Mac的,Bridge模式中的接口和实现分离见的的比较多。
Bridge 模式
目的 :
1) 将抽象和具体实现间解耦合,这样让两者保持独立性。
2) 将接口发布在一个继承关系层,将实现隐藏在它自己的继承关系层。
3) 在封装之外在加上隔离
动机:
对于下图所示的线程分配系统
如果再加入一种平台
如果加入更多种平台呢,要添加的具体实现内将会很多。
所以Bridge模式的解决办法是将继承关系抽离出两个正交的关系。接口独立于平台,而实现依赖于平台。
讨论:
何时使用Bridge模式:
1)当你希望具体实现运行时绑定
2)当你遇到一个接口和数量可观的实现之间的耦合导致的类扩散问题。(proliferation of classes)
3)当你希望在多个对象之间共享实现
4)当你需要映射正交的类结构时
规则提要:
1) Adapter模式针对对象被设计好之后,Bridge模式针对对象设计前
2)Bridge模式被设计用于将抽象接口和具体实现分离。而Adapter模式让不相关的类能合作
3)State、Strategy、Bridge(某些Adapter)具有类似的解决方案结构。因为它们分享了“handle/body”idiom的元素。它们的不同在于目的--解决不同的问题
4)State和Bridge模式的结构是一致的(除了Bridge承认envelope classes的分层,而State只有一层)。两者用相同的结构解决不同的问题:State允许一个对象的行为随着它的状态改变,而Bridge的目的是解耦抽象和实现以使二者在依赖性上独立。
5)如果接口类代理了具体实现的创建(而不是直接创建/耦合它们),那么这种设计通常就会用Abstract Factory模式来创建具体实现对象。