目录
[显示]

1.摘要

Bridge模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。在面对“抽象”和“实现”都可能变化的情况时,使用Bridge模式能极大的减少继承的层次关系并提高代码复用程度。

2. 针对问题

一个函数通常会包括声明与实现两部分。简单的说,声明的是“做什么”,而实现的内容则是“怎么做”。
在使用继承的面向对象设计中,通过对同一基类的继承,可以让基类中的同一个函数声明在不同派生类中有多个不同的实现。但是,在“派生”一个新类后,这个类所构造实例对象的函数声明和实现在编译时将绑定在一起。也就是说,虽然对于同一个接口,我们可以更换不同的对象来更改它的实现,但是对于同一个对象,它的某个函数的实现方式在编译时就已经确定,运行时无法修改。
Bridge模式则是将声明与实现放在两个不同的对象中,对于同一个对象,它某个函数的实现方式不是唯一的。
而另一个关于继承的问题则是派生类的继承层次问题:因为底层实现代码被绑定在派生类中,如果某个接口下有一个树形的继承关系,那么实现代码将出现在每一个叶子派生类中。如果我们要更换底层实现,那么就要为每一个叶子派生类创建一个平级的替换实现类,这个工作量是庞大的。

3. 介绍

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

4. 实现

Bridge模式的结构如下图:

关于Bridge实现有下面几点需要注意:
1、Implementor与Abstraction的接口不需要完全一致,甚至可以完全不同。
2、imp对于RefinedAbstraction是可见的,派生的抽象类可以调用实现类的方法,不需要增加针对某个派生接口的实现类。
3、Abstraction在运行时可以允许修改imp的具体对象,以达到运行时切换实现方法的效果。

5. 特点

1、分离接口及实现,一个实现不需要绑定在某个接口上,同样一个抽象类也可以随时更换它的实现方式。
2、进行层次扩充时,抽象类和实现类彼此互不干涉。

6. 相关文章

设计模式总结

7. 参考文章

  1. 《设计模式_可复用面向对象软件的基础》