桥接模式

将继承关系转化成关联关系, 降低类与类之间的耦合度, 使系统更加灵活, 减少了系统中类的数量.

结构

  • 抽象类: 一般是抽象类而不是接口, 其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象.
  • 扩充抽象类
  • 实现类接口
  • 具体实现类
    桥接模式

    桥接模式

    Demo

    抽象类: 其中声明了实现类接口 File 类型的对象属性

    `java
    public abstract class AbstractDb {

    protected File file;

    public AbstractDb(File file) {

      this.file = file;
    

    }

    abstract File exportFile();

}

##### 扩充抽象类: 继承抽象类, 实现其方法
```java
public class MysqlDb extends AbstractDb {

    public MysqlDb(File file) {
        super(file);
    }

    @Override
    File exportFile() {
        System.out.println("Db-mysql 导出文件");
        return file.exportFile();
    }
}
public class OracleDb extends AbstractDb {
    public OracleDb(File file) {
        super(file);
    }

    @Override
    File exportFile() {
        System.out.println("Db- Oracle 导出文件");
        return file.exportFile();
    }
}
实现类接口: 桥的另一端接口
public interface File {

    File exportFile();
}
具体实现类: 实现类接口的实现, 做具体相关业务操作
public class ExcelFile implements File {
    @Override
    public File exportFile() {

        System.out.println("导出Excel文件");
        return new ExcelFile();
    }
}
public class TextFile implements File {

    @Override
    public File exportFile() {
        System.out.println("Text 格式文件");
        return new TextFile();
    }
}
Test
public class BridgeTest {
    public static void main(String[] args) {

        File file = new TextFile();

        AbstractDb db = new MysqlDb(file);
        db.exportFile();
    }
}

输出结果:

Db-mysql 导出文件
Text 格式文件

总结

  • 扩展方便, 减少子类个数
  • 结构较复杂. 增加系统理解难度
  • 多个维度独立维护, 同时有一定关联关系时适用

   版权声明

文章作者: liuzhihang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源!

 上一篇
代理模式 代理模式
引入一个新的代理对象, 代理对象在客户端对象和目标对象之间起到中介的作用, 它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务.
2018-12-12
下一篇 
组合模式 组合模式
对树形模式处理相对合适, 将对象组合成树形结构以表示“部分-整体”的层次结构, 使得用户对单个对象和组合对象的使用具有一致性.
2018-12-10