桥接模式

发布 : 2018-12-12 分类 : 设计模式 浏览 :

介绍

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

结构

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

    Demo

    抽象类: 其中声明了实现类接口 File 类型的对象属性
    public abstract class AbstractDb {

    protected File file;

    public AbstractDb(File file) {
    this.file = file;
    }

    abstract File exportFile();

    }
扩充抽象类: 继承抽象类, 实现其方法
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
原文链接 : https://liuzhihang.com/2018/12/12/bridge-mode.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

博客已萌萌哒运行(●'◡'●)ノ♥
Theme - BMW | Made With 💗 | Powered by GodBMW