桥接
意图
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
动机
当一个抽象可能有多个实现时,通常用继承来协调它们,抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立第进行修改、扩充和重用。 例如不同操作平台下涉及到不同的平台依赖实现,客户在创建爱你窗口时应该不涉及到具体实现部分。仅仅是窗口的实现部分依赖于应用运行的平台。这样客户代码在创建窗口时就不涉及到特定的平台。Bridge模式将Window抽象和它的实现部分分别放在独立的类层次结构中。其中一个类层次结构针对窗口接口,另一个独立的类层次结构针对平台相关的窗口实现部分。
适用性
-
不希望在抽象和它的实现部分之间有一个固定的绑定关系。
-
类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。
-
对一个抽象的实现部分的修改应该对客户不产生影响,即客户的代码不必冲洗编译。
-
你想对客户完全隐藏抽象的实现部分。
-
你想在多个对象间共享实现,单同时要求客户并不知道这一点。
效果
-
分离接口及其部分实现。
-
提高可扩充性
-
实现鞋机对客户透明
实现
注意事项