惯常的继承机制将抽象与实现绑定在一起,不利于扩展。
桥接模式将抽象与实现分离,即分离提供给上层客户的接口和具体的底层实现。
桥接模式的优点:
- 抽象和实现可分别通过子类进行扩展
- 将不同的抽象和实现子类组合在一起
- 底层实现的修改不影响上层客户接口
通常将桥接模式分为四个组成部分:
- 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() {
}
}