《java与模式》学习系列——桥梁模式
一、 桥梁(Bridge)模式的结构
桥梁模式的用意是在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系(继承是一种强耦合),从而使两者可以相对独立地变化。桥梁模式是用聚合关系实现的弱耦合解决方案。
结构图如下:
二、 桥梁模式在java中的应用
AWT的Peer架构
Java为AWT中的每一个GUI构件都提供了一个Peer构件,这个Peer构件是所属的Java构件在本地环境中的实现化。比如Choice是一个AWT提供的GUI构件,它允许用户在一个列中选择一个或者多个项。一个Java应用程序的开发人员只需要考虑Choice对象被动态地与一个合适的底层Peer对象联系起来,这个Peer对象会按照指令执行正确的操作。这个将Java的GUI构件与本地环境的Peer构件联系起来的接口,就是所谓的Peer接口。一个Peer接口其实就是一个定义了Peer构件必须实现的各个方法的接口。
每一个java构件都是Component类型的子类,而每一个Peer构件都是ComponentPeer类型的子类,他们通过Toolkit对象相互通信,这正是桥梁模式的应用。
JDBC驱动器
大多数的驱动器都是桥梁模式的应用。
三、 桥梁模式与其他模式的关系
适配器模式
桥梁模式与适配模式很相似,但是适配器模式的目的是要改变已有的接口,让他们可以相容,以使没有关系的两个类能在一起工作。而桥梁模式是分离抽象和实现化,使得两者的接口可以不同。
四、在什么情况下使用桥梁模式
1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免两个层次之间建立静态的联系。
2、设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端的完全透明的。
3、一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。
4、虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。