桥接模式

桥接模式

1.桥接分离实现和抽象,提高了灵活性,促进软件解耦,两层可以独立解耦。
2.桥接模式可以替换多次继承,从而减少子类的个数,降低系统的管理和维度成本。
3.桥接模式增加系统的理解和设计的难度,需要设计抽象和编程。
4.需要识别系统两个独立变化的维度,因此使用访问有一定限制。

分为:使用层,抽象层,实现层

其中所有层:对应的client类
抽象层:Abstrcut类和对应的子类,聚合了需要实现的接口,充当桥接的作用,连接客户端和实现类。
实现层:实现了具体接口的实现类

下面的例子就是使用不同品牌和类型的笔记本实现开关功能。
开关接口类

public interface INoteBook {
  void open();
  void close();
}

不同品牌的实现类

public class HuaWeiNoteBook implements INoteBook {

  @Override
  public void open() {
    System.out.println("华为笔记本开启");
  }

  @Override
  public void close() {
    System.out.println("华为笔记本关闭");
  }
}

抽象层类

public abstract class AbsNoteBook implements INoteBook{

  private INoteBook iNoteBook;

  public AbsNoteBook(INoteBook iNoteBook) {
    this.iNoteBook = iNoteBook;
  }

  @Override
  public void open() {
  this.iNoteBook.open();
  }

  @Override
  public void close() {
    this.iNoteBook.close();
  }
}

使用者 实现抽象层,实现直接的接口

public class BusinessNoteBook extends AbsNoteBook {

  public BusinessNoteBook(INoteBook iNoteBook) {
    super(iNoteBook);
  }

  @Override
  public void close() {
    super.close();
    System.out.println("商务笔记关闭");
  }

  @Override
  public void open() {
    super.open();
    System.out.println("商务笔记打开");
  }
}

测试

public class BrideProxyTest {

  public static void main(String[] args) {
    GameNoteBook gameNoteBook = new GameNoteBook(new XiaoMiNoteBook());
    gameNoteBook.close();
    gameNoteBook.open();
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。