Bridge模式(结构型)

将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥接中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。

Bridge模式的结构图如下:


Bridge 模式

Bridge 模式将抽象和实现分别独立实现, 在代码中就是 Abstraction 类和 AbstractionImp类。

讨论:

Bridge 是设计模式中比较复杂和难理解的模式之一, 也是 OO 开发与设计中经常会用到的模式之一。 使用组合( 委托) 的方式将抽象和实现彻底地解耦, 这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低。

 GoF 的那句话中的“实现” 该怎么去理解:“实现”特别是和“抽象” 放在一起的时候我们“默认” 的理解是“实现” 就是“抽象” 的具体子类的实现,但是这里GoF 所谓的“实现”的含义不是指抽象基类的具体子类对抽象基类中虚函数(接口) 的实现, 是和继承结合在一起的。 而这里的“实现” 的含义指的是怎么去实现用户的需求, 并且指的是通过组合(委托) 的方式实现的, 因此这里的实现不是指的继承基类、实现基类接口,而是指的是通过对象组合实现用户的需求。

实际上上面使用 Bridge 模式和使用带来问题方式的解决方案的根本区别在于是通过继承还是通过组合的方式去实现一个功能需求。因此面向对象分析和设计中有一个原则就是:Favor Composition Over Inheritance。 其原因也正在这里。

你可能感兴趣的:(Bridge模式(结构型))