设计模式学习笔记(16)——桥接模式

版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/90053689

1. 定义

又称为柄体模式或接口模式,将抽象化与实现化解耦,使得二者可以独立地变化

  • 抽象:从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征,就是抽象化(接口、抽象类)
  • 实现:抽象化给出的具体实现,就是实现化(类的实例、抽象类的子类)
  • 解耦:在一个软件系统的抽象化和实现化之间使用聚合关系而不是继承关系

2. 使用

  • 抽象超类型A:定义高级抽象化,关联上实现超类型B
  • 扩展实现A’:扩展高级抽象,改变和修正抽象化的定义
  • 实现超类型B:定义低级抽象化,实现高级抽象化A的基本方法
  • 具体实现B’:实现低级抽象

抽象超类型

package BridgePattern;

/**
 * 高级抽象
 */
public abstract class Abstraction {

    //关联
    private Implementor implementor;

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

    //抽象方法
    public void operate(){
        implementor.operateImpl();
    }
}

实现超类型
package BridgePattern;

/**
 * 低级抽象
 */
public abstract class Implementor {

    //实现低级的抽象方法
    public abstract void operateImpl();
}

具体实现
package BridgePattern;

/**
 * 实现低级抽象
 */
public class ConcreteImplementor extends Implementor {
    @Override
    public void operateImpl() {
        System.out.println("高级抽象方法的具体实现");
    }
}

扩展抽象
package BridgePattern;

/**
 * 修正高级抽象
 */
public class ConcreteAbstraction extends Abstraction{

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

    public void myOperate(){
        System.out.println("高级抽象的扩展方法");
    }
}

测试

package BridgePattern;

public class Test {
    public static void main(String[] args) {
        Implementor implementor = new ConcreteImplementor();
        Abstraction abstraction = new ConcreteAbstraction(implementor);
        abstraction.operate();
        ((ConcreteAbstraction) abstraction).myOperate();
    }
}

3. 特点

  • 业务的变化具有两个维度,一个纬度的变化会引起另一个纬度进行相应的变化
  • 将抽象和实现解耦
  • 增加了复杂度

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/90053689