重点
- 抽象与实现分离
-
解决继承爆炸、用于系统有多个角度分类。(下面的例子,可已根据shape分类,也可以根据draw的颜色分类)不使用桥接模式的情况下,如果有三个角度分类、每个角度有两个分类的话,需要继承实现2^3=8个类,用了桥接模式只需要继承实现2*3=6个类。
桥接
public interface DrawAPI {
public void draw();
}
public class RedPencil implements DrawAPI {
@Override
public void draw() {
System.out.println("Drawing with Red Pencil");
}
}
public class GreenPen implements DrawAPI {
@Override
public void draw() {
System.out.println("Drawing with Green Pen");
}
}
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
public class Circle extends Shape {
public Circle(DrawAPI drawAPI) {
super(drawAPI);
}
public void draw() {
drawAPI.draw();
}
}
public class Rectangle extends Shape {
public Rectangle(DrawAPI drawAPI) {
super(drawAPI);
}
public void draw() {
drawAPI.draw();
}
}
public class BridgePatternDemo {
public static void main(String[] args) {
Shape redCircle = new Circle(new RedPencil());
Shape greenRectangle = new Rectangle(new GreenPen());
RedPencil.draw();
GreenPen.draw();
}
}
网友评论