桥接模式(Bridge Pattern)又叫作桥梁模式、接口(Interface)模式或柄体(Handle and Body)模式,指将抽象部分与具体实现部分分离,使它们都可以独立地变化,属于结构型设计模式。
    桥接模式的主要目的是通过组合的方式建立两个类之间的联系,而不是继承,但又类似多重继承方案。但是多重继承方案往往违背了类的单一职责原则,其复用性比较差,桥接模式是比多重继承方案更好的替代方案。桥接模式的核心在于把抽象与实现解耦。

    使用场景:
    (1)在抽象和具体实现之间需要增加更多灵活性的场景。
    (2)一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展。
    (3)不希望使用继承,或因为多层继承导致系统类的个数剧增。

    替代继承,设计模式优先使用组合/聚合,继承具有强侵入性

    优点
    (1)分离抽象部分及其具体实现部分。
    (2)提高了系统的扩展性。
    (3)符合开闭原则。
    (4)符合合成复用原则。
    缺点
    (1)增加了系统的理解与设计难度。
    (2)需要正确地识别系统中两个独立变化的维度。

    image.png

    1. public abstract class Abstraction {
    2. public abstract void operate();
    3. protected Implementor implementor;
    4. public Abstraction(Implementor implementor) {
    5. this.implementor = implementor;
    6. }
    7. }
    8. public interface Implementor {
    9. void implement();
    10. }
    11. public class ConcreteImplementor implements Implementor{
    12. @Override
    13. public void implement() {
    14. }
    15. }
    16. public class ConcreteAbstraction extends Abstraction {
    17. @Override
    18. public void operate() {
    19. this.implementor.implement();
    20. }
    21. public ConcreteAbstraction(Implementor implementor) {
    22. super(implementor);
    23. }
    24. }

    在适配器模式的基础上,桥接模式实现了Adaptee的多态,而适配器模式的Adaptee是固定的