8.桥接模式

  • 一、角色
    • Abstraction(抽象类)
    • RefinedAbstraction(扩充抽象类)
    • Implementor(实现类接口)
    • ConcreteImplementor(具体实现类)
  • 二、适用场景
    • 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系
    • 抽象化角色和实现化角色可以以继承的方式独立扩展而互不影响,在程序运行时可以动态将一个抽象化子类的对象和一个实现化子类的对象进行组合,即系统需要对抽象化角色和实现化角色进行动态耦合
    • 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展
    • 虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者
    • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用
  • 三、实例
    • 图-1中的Pen是抽象类,SmallPen、MiddlePen、BigPen是抽象类Pen的扩充实现类,而Color是接口,Red、Green、Blue、White、Black则是接口的的实现类,Pen和Color之间是关联关系,这种关联是抽象和接口的关联,是一种抽象层面的关联,并没有涉及具体实现类的关联,将2个在业务上存在关联关系的具体类实现了抽象层面的解耦,在客户端调用时候可以动态指定要关联的两个业务维度的具体实现类
    • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/bridge
    图-1
原文地址:https://www.cnblogs.com/zhongj/p/11282726.html