- 简易的台灯
- Abstract Server模式
- 谁拥有接口.
- 接口属于它的客户,而不是它的派生类.
- 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系.
- 逻辑关系和实体关系的强度是不一致的.在实体关系上,继承比依赖更强.
- 最好将接口和它的客户打包,而不是和它的派生类在一起.
- 谁拥有接口.
- Adapter模式
- 当Light不能继承Switchable接口时(第三方代码).
- Modem Client仍然看到的是期望的连接行为,而Ded User不必去调用根本无用的Dial/Hangup().
- 仍然存在杂凑体.Adapter仍然要模拟连接动作.但是依赖关系都存在于Adapter上,其对User是隐藏的.只有factory才会依赖于它.
- Bridge模式
- 在类型层次结构具有多个自由度时,Bridge把这些层次结构分开并通过桥把他们结合在一起,而不是合并.
- 结论
- 不存在完美的结构.一个变化就能够破坏所谓的完美结构.
- 只存在试图去平衡当前的代价和收益的结构.诀窍是尽可能的保持系统简单,灵活.
- Adapter方案简单直接,并让所有的依赖关系都指向正确的方向,并且易于实现.
- Bridge复杂,但是在需要完全分离链接和通信策略并且需要增加新的链接策略时才使用.
[Agile Software Development(Principles,Patterns,and Pracitices)]