名稱 : Bridge 橋接模式 ( 參考Spring利用的橋接模式)
意圖:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
適用性:
- 你不希望在抽象和它的實現部分之間有一個固定的綁定關係。例如這種情況可能是因為,在程式運行時刻實現部分應可以被選擇或者切換。
- 類的抽象以及它的實現都應該可以通過產生子類的方法加以擴充。這時B r i d g e 模式使你可以對不同的抽象介面和實現部分進行組合,並分別對它們進行擴充。
- 對一個抽象的實現部分的修改應對客戶不產生影響,即客戶的代碼不必重新編譯。
- (C + +)你想對客戶完全隱藏抽象的實現部分。在C + +中,類的表示在類介面中是可見的。
- 有許多類要產生。這樣一種類階層說明你必須將一個對象分解成兩個部分。R u m b a u g h 稱這種類階層為“嵌套的普化”(nested generalizations )。
- 你想在多個對象間共用實現(可能使用引用計數),但同時要求客戶並不知道這一點。一個簡單的例子便是C o p l i e n 的S t r i n g 類[ C o p 9 2 ],在這個類中多個對象可以共用同一個字串表示(S t r i n g R e p )。
執行個體
1. 定義一個介面 Work
package Bridge_Pattern; public interface Work { public void show(); }
2. 定義一個類 Profession
package Bridge_Pattern; public class Profession { private Work work; public Profession(Work work) { this.work = work; } public void theme(){ work.show(); } }
3. 定義具體的IT工作 ITWork
package Bridge_Pattern;public class ITWork implements Work { @Override public void show(){ System.out.println("hello this is ITWork"); } }
4. 定義一個銷售工作 SellWork
package Bridge_Pattern;public class SellWork implements Work{ @Override public void show() { System.out.println("hello this is sellwork"); } }
5. 定義一個測試類別
package Bridge_Pattern; public class Client { public static void main(String[] args) { //展現IT職業 new Profession(new ITWork()).theme(); //展現銷售職業 new Profession(new SellWork()).theme(); }}
總結 :
在Spring架構中,用到橋接模式比較多。 敬請斧正!