前言
設(shè)計模式系列代碼均持續(xù)更新在我的gitHub:to github
普通實現(xiàn)模式類圖
- 圖形(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("圓形...");
}
}
總結(jié)
1、優(yōu)點
- 抽象與實現(xiàn)分離辆童,擴展能力強
- 符合開閉原則
- 符合合成復(fù)用原則
- 其實現(xiàn)細節(jié)對客戶透明
2宜咒、缺點
- 由于聚合關(guān)系建立在抽象層,要求開發(fā)者針對抽象化進行設(shè)計與編程把鉴,能正確地識別出系統(tǒng)中兩個獨立變化的維度故黑,這增加了系統(tǒng)的理解與設(shè)計難度。