設計模式系列-橋接模式
作者:花括號MC
橋接模式用于將抽象部分與它的實現部分分離,使他們可以獨立的變化。這句話不是很好理解,我來簡單翻譯一下,大概就是將一個事物的兩個維度的變化解耦開。
橋接模式用于將抽象部分與它的實現部分分離,使他們可以獨立的變化。這句話不是很好理解,我來簡單翻譯一下,大概就是將一個事物的兩個維度的變化解耦開。
舉個例子
我們來看個毛筆和蠟筆的例子,假設我們需要大中小三種型號的畫筆,能夠繪制5種不同的顏色,如果使用蠟筆那么我們需要15只,如果使毛筆的話,我們只需要3只,外加5種顏料盒就OK。這里的關鍵點在于,毛筆可以做到將筆的型號和顏色解耦開,使他們可以獨立的變化,這就是橋接模式。
先來看一下UML圖:
再來看一下具體代碼如何實現。
- public interface Color {
- String draw();
- }
紅顏色
- public class RedColor implements Color {
- @Override
- public String draw() {
- return "紅色";
- }
- }
定義抽象的毛筆
- public abstract class BrushPen {
- //橋接畫筆和顏色
- protected Color color;
- public void setColor(Color color){
- this.color = color;
- }
- public abstract void operation();
- }
定義一個小號的毛筆
- public class SmallBrushPen extends BrushPen {
- @Override
- public void operation() {
- System.out.println(this.color.draw() + " 小號毛筆");
- }
- }
客戶端這樣使用橋接模式
- public class BridgeBrushPenDemo {
- public static void main(String[] args){
- BrushPen smallBrushPen = new SmallBrushPen();
- //紅色小號毛筆
- smallBrushPen.setColor(new RedColor());
- smallBrushPen.operation();
- //綠色小號毛筆
- smallBrushPen.setColor(new Green());
- smallBrushPen.operation();
- }
- }
總結
橋接模式是結構型模式,當事物涉及多個維度的變化時,使用橋接模式可以大大降低系統復雜度,這個模式也是我認為的最難理解的一個設計模式。
責任編輯:武曉燕
來源:
花括號MC