一.桥接模式要解决的问题
桥接模式的作用将接口与实现分离。
二.桥接设计模式用例(Java)
假设有一个接口继承层次图如下:
将其改为桥接模式类图如下:
其中Shape和Color接口使用组合关系,附Java代码如下:
interface Color { void applyColor(); } abstract class Shape { //Composition - implementor protected Color color; //constructor with implementor as input argument public Shape(Color c){ this.color=c; } abstract public void applyColor(); } class Triangle extends Shape{ public Triangle(Color c) { super(c); } @Override public void applyColor() { System.out.print("Triangle filled with color "); color.applyColor(); } } class Pentagon extends Shape{ public Pentagon(Color c) { super(c); } @Override public void applyColor() { System.out.print("Pentagon filled with color "); color.applyColor(); } } class RedColor implements Color{ public void applyColor(){ System.out.println("red."); } } class GreenColor implements Color{ public void applyColor(){ System.out.println("green."); } }
public class BridgePatternTest {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
三.桥接设计模式使用场景
当抽象接口和实现类之间有独立的继承(或实现)层次并且要求对客户端隐藏具体实现细节时优先考虑桥接设计模式。