桥接模式

桥接模式定义

将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》
将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。—— 《图解设计模式》

类的功能层次结构:父类具有基本功能,在子类中增加新的功能;
类的实现层次结构:父类通过声明抽象方法来定义接口,子类通过实现具体方法来实现接口;

桥接模式中有四个角色:

  • 抽象化角色:使用实现者角色提供的接口来定义基本功能接口。
  • 持有实现者角色,并在功能接口中委托给它,起到搭建桥梁的作用;
    注意,抽象化角色并不是指它就是一个抽象类,而是指抽象了实现。
  • 改善后的抽象化角色:作为抽象化角色的子类,增加新的功能,也就是增加新的接口(方法);与其构成类的功能层次结构;
  • 实现者角色:提供了用于抽象化角色的接口;它是一个抽象类或者接口。
  • 具体的实现者角色:作为实现者角色的子类,通过实现具体方法来实现接口;与其构成类的实现层次结构。
    如果抽象和实现两者做不到独立地变化,就不算桥接模式。

桥接模式和适配器模式的区别

共同点:桥接和适配器都是让两个东西配合工作

不同点:出发点不同。

  • 适配器:改变已有的两个接口,让他们相容。
  • 桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。

所以说,如果你拿到两个已有模块,想让他们同时工作,那么你使用的适配器。
如果你还什么都没有,但是想分开实现,那么桥接是一个选择。

桥接是先有桥,才有两端的东西
适配是先有两边的东西,才有适配器

设计模式实例

具体实例 点击查看


参考文献:http://www.runoob.com/design-pattern/bridge-pattern.html


(全文完)