结构型模式之桥接模式

来源:互联网 发布:电子发票制作软件 编辑:程序博客网 时间:2024/05/22 03:30

惯常的继承机制将抽象与实现绑定在一起,不利于扩展。
桥接模式将抽象与实现分离,即分离提供给上层客户的接口和具体的底层实现。


桥接模式的优点:

  • 抽象和实现可分别通过子类进行扩展
  • 将不同的抽象和实现子类组合在一起
  • 底层实现的修改不影响上层客户接口

通常将桥接模式分为四个组成部分:

  • Abstraction 抽象接口
  • RefinedAbstraction 抽象接口的扩展
  • Implementor 实现者接口,与Abstraction可以不一致
  • ConcreteImplementor 具体实现者

抽象接口

interface Window {    public void getWindowImp();    public void drawRect();}

抽象接口的扩展

class XPWindow implements Window {    private WindowImp windowImp;    @Override    public void getWindowImp() {        windowImp = new XPWindowImp();    }    @Override    public void drawRect() {        windowImp.drawRect();    }    public void drawContents() {        windowImp.drawImage();    }}class LinuxWindow implements Window {    private WindowImp windowImp;    @Override    public void getWindowImp() {        windowImp = new LinuxWindowImp();    }    @Override    public void drawRect() {        windowImp.drawRect();    }    public void drawContents() {        windowImp.drawText();    }}

实现者接口

interface WindowImp {    public void drawRect();    public void drawText();    public void drawImage();}

具体实现者

class XPWindowImp implements WindowImp {    @Override    public void drawRect() {        Log.d("WindowImp", "drawRect for XPWindow" );    }    @Override    public void drawText() {    }    @Override    public void drawImage() {    }}class LinuxWindowImp implements WindowImp {    @Override    public void drawRect() {        Log.d("WindowImp", "drawRect for LinuxWindow" );    }    @Override    public void drawText() {    }    @Override    public void drawImage() {    }}
原创粉丝点击