本文介绍了GoF中的桥接模式。
模式推演
可变的遥控器:
如果需要设计一个遥控器,这个遥控器的按钮是可能发生变化的,初始设计如下:
但是,如果我们希望一个遥控器可以操控多台电视机,上述设计显然满足不了需求,我们需要进一步封装变化。
可变的电视机:
由于我们希望一个遥控器可以操控多台电视机,那么遥控器不能依赖电视机的具体,而必须是电视机的抽象,所以,将电视机的共同方法抽象成超类。
这里,注意,在遥控器和电视机两个抽象之间建立了联系,这种设计方式称为桥接模式。
定义
桥接模式(Bridge Pattern):通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。
用途:
- 适合使用在需要跨越多个平台的图形和窗口系统上;
- 当需要用不同的方式改变接口和实现时,你会发现桥接模式很好用。
优点:
- 将实现予以解耦,让它和界面之间不再永久绑定;
- 抽象和实现可以独立拓展,不会影响到对方;
- 对于“具体的抽象类”所做的改变,不会影响到客户。
缺点:
- 增加了复杂度。