設計模式-橋接模式Bridge
阿新 • • 發佈:2020-10-26
橋接模式
Bridge模式基於類的最小設計原則,通過使用封裝繼承聚合讓不同類承擔不同的職責。適合解決多層繼承帶來的類個數膨脹問題,通過繼承和聚合優化優化多層繼承結構。
例如:如果通過繼承來實現5種不同顏色3種不同大小的筆,則需要15種具體的實現類,但是通過橋接模式則只需要8種: UML類圖如下所示:
可以看到三種不同大小的筆分別繼承他們的父類Pen,而他們父類聚合了Color介面,於是三種不同大小的筆可以聚合該介面的實現類,即一共五種顏色,此時一共需要8種不同的實現類。
程式碼示例
//抽象類 public abstract class Pen { protected Color color; public void setColor(Color color) { this.color=color; } public abstract void draw(String name); } //擴充抽象類 public class SmallPen extends Pen { public void draw(String name) { String penType="小號毛筆繪製"; this.color.bepaint(penType,name); } } //擴充抽象類 public class MiddlePen extends Pen { public void draw(String name) { String penType="中號毛筆繪製"; this.color.bepaint(penType,name); } } //擴充抽象類 public class BigPen extends Pen { public void draw(String name) { String penType="大號毛筆繪製"; this.color.bepaint(penType,name); } } //實現類介面 public interface Color { void bepaint(String penType,String name); } //擴充實現類 public class Red implements Color { public void bepaint(String penType,String name) { System.out.println(penType + "紅色的"+ name + "."); } } //擴充實現類 public class Green implements Color { public void bepaint(String penType,String name) { System.out.println(penType + "綠色的"+ name + "."); } } //擴充實現類 public class Blue implements Color { public void bepaint(String penType,String name) { System.out.println(penType + "藍色的"+ name + "."); } } //擴充實現類 public class White implements Color { public void bepaint(String penType,String name) { System.out.println(penType + "白色的"+ name + "."); } } //擴充實現類 public class Black implements Color { public void bepaint(String penType,String name) { System.out.println(penType + "黑色的"+ name + "."); } }