-
特点:了解Bridge模式需要先了解类扩展的两个维度:类的实现层次结构和类的功能层次结构。
类的实现层次结构:可理解为类方法中算法的实现,如需修改或扩展算法通常是利用多态,通过继承方式重写方法。
类的功能层次结构:每个类中的方法可理解为一个功能,功能的扩展可以在原类中增加,也可以通过继承方式进行扩展。
由此可以看到,从类的两个维度进行扩展如果同时使用继承的方式,则会变得混乱毫无章法,所以管理会出现困难,所以就需要将两个维度的扩展进行分离,同时又不能将两个维度的关系完全分离。
Bridge模式就是起到了两个维度的“分离”和“衔接”的作用。
与Adapter模式对比:看到Bridge模式后,首先想到的就是Adapter模式,对比后感觉Adapter模式就是Bridge模式的某个结构分支,因为Adapter模式的实现方式可以是委托也可以是继承,但细想后可能更倾向于类的实现层次结构分支,因为Adapter模式是修改原接口API的实现后对外提供接口API。
- 角色:
角色名称 | 角色职责 |
---|---|
Abstraction(抽象化) | 定义功能层次的API |
Refined Abstraction(改善后的抽象化) | 增加Abstraction中未实现的新功能API |
Implementor(实现者) | 定义实现层的API,委托实现Abstraction中定义的API |
ConcreteImplement(具体实现) | 继承实现Implementor中定义的API |
-
角色关系:
Bridge.png
-
代码示例:Bridge
以上文献参考:《图解设计模式》
网友评论