前言
设计模式系列代码均持续更新在我的gitHub:to github
普通实现模式类图
- 图形(graph)有2个维度的属性,一个是形状(shape),一个是颜色(color)
-
类图如下:
- 此时想要增加一个三角形(triangle)就得多写四个类
桥接模式类图
- 此时想添加三角形(triangle)只需要写一个继承Shape类的Triangle类就行了
- 对于 形状(shape) 和 颜色(color) 这2个不同维度的属性来说,由于 Shape类聚合了Color接口,相当于将2个属性用"桥"连接起来了
部分代码
public interface Color {
void printColor();
}
public class Red implements Color {
public void printColor() {
System.out.print("红色的");
}
}
public abstract class Shape {
private Color color;
public Shape(Color color) {
this.color = color;
}
protected void printColor() {
this.color.printColor();
}
abstract void printShape();
}
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
public void printShape() {
printColor();
System.out.println("圆形...");
}
}
总结
1、优点
- 抽象与实现分离,扩展能力强
- 符合开闭原则
- 符合合成复用原则
- 其实现细节对客户透明
2、缺点
- 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。
网友评论