22 Bridge(桥接,结构型)
-
- 需要将“类的功能层次结构”和“类的实现层次结构”分离为两个独立的类层次结构。然后在它们之间搭建一座bridge。
-
- 动机:
- 桥接模式的用意是将抽象与实现解耦,使得二者可以独立地变化
- 抽象(Abstraction)不等于接口(Interface),存在于多个实体中的共同的概念性联系,就是抽象。接口是一种抽象的方式。
- 所谓强耦和,就是在编译时期已经确定的,无法在运行时期动态改变的关联;所谓弱耦和,就是可以动态地确定并且可以在运行时期动态地改变的关联。
- 当抽象可以有几种可能的实现之一时,通常容纳它们的方法是使用继承。
- 但是这种方法并不总是足够灵活。
- 继承将实现永久地绑定到抽象上,这使得独立地修改、扩展和重用抽象和实现变得困难。
- 桥接模式的用意是将抽象与实现解耦,使得二者可以独立地变化
- 什么时候用:
- 您希望避免抽象及其实现之间的永久绑定。
- 当实现必须在运行时被选择或切换时。
- 抽象和它们的实现都应该通过子类化来扩展。
- 在这种情况下,桥接模式允许您组合不同的抽象和实现,并独立地扩展它们。
- 抽象实现中的更改应该不会对客户机产生影响。
- 您希望避免抽象及其实现之间的永久绑定。
- 结构:
- 参与者:
- 协作:
- 抽象将客户端请求转发给它实现者对象。
- 后果:
- 接口和实现解耦
- 增加了可扩展性
- 对客户端隐藏实现细节。
- 例:
-
- 总结:
- 抽象方法的继承子类等价于增加新方法
- 总结: