设计模式之桥接模式

设计模式之桥接模式

桥接模式定义:将抽象和实现解耦,使得两者可以独立变化

关键点:1.分离抽象和具体 2.用聚合方式(桥)连接抽象和具体

 用的不多,了解即可

桥梁模式通过类图

Abstraction:抽象化角色

 它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类

Implementor:实现化角色

它是接口或者抽象类,定义角色必需的行为和属性。

RefinedAbstraction:抽象化角色的具体

ConcreteImplementor:实现化角色的具体

2.桥接模式通用源码

2.1 实现化角色

public interface Implementor {

    void doSomething();

    void doAnything();
}

2.2 创建实现化角色具体

public class ConcreteImplementor1 implements Implementor {
    @Override
    public void doSomething() {
        // 业务逻辑处理
    }

    @Override
    public void doAnything() {
        // 业务逻辑处理
    }
}

2.3 创建 抽象化角色

public abstract class Abstraction {
    // 定义对实现化角色的引用
    private Implementor implementor;

    public Abstraction(Implementor implementor) {
        this.implementor = implementor;
    }

    // 自身的行为和属性
    public void request() {
        this.implementor.doSomething();
    }

    // 实现化角色
    public Implementor getImplementor() {
        return implementor;
    }
}

2.4 创建抽象化角色具体

public class RefineAbstraction extends Abstraction {

    public RefineAbstraction(Implementor implementor) {
        super(implementor);
    }

    // 修正父类的行为
    @Override
    public void request() {
        super.request();
        super.getImplementor().doAnything();
    }
}

2.5 创建Client调用

public class Client {
    public static void main(String[] args) {
        // 定义一个实现化角色
        Implementor implementor = new ConcreteImplementor1();
        // 定义一个抽象化角色
        Abstraction abstraction = new RefineAbstraction(implementor);
        // 执行代码
        abstraction.request();
    }
}

3.桥接模式的优点

  •   抽象和实现分类:为了解决继承的缺陷而提出的设计模式
  •   优秀的扩充能力
  •   实现细节归客户透明

4.桥接模式的使用场景

  •   不希望或者不适合使用继承的场景
  •   抽象或者抽象类不稳定的场景
  •   重要性要求较高的场景

桥接模式的意图还是对变化的封装,尽量把可能变化的因素封装到最细,最小的逻辑单元之中,避免风险扩散

原文地址:https://www.cnblogs.com/yingxiaocao/p/13520872.html