JAVA設計模式-Bridge

   個人認爲Bridge模式是用在對於分類的組合上的,舉個例子,在大學裏發獎學金,就拿川大來說,一共是32個學院,銀行卡有建行、工行、中行和農行,那麼發放方式就有計算機學院+工行、計算機學院+建行、數學學院+建行、數學學院+中行等32 x 4=128種方式。一般來說,就需要128個子類來實現發放獎學金這個功能,如果招商銀行又加到銀行裏面來,那麼我們就還得寫32個類,這樣太過於複雜了。因此我們必須想一個辦法來解決這個問題,於是就用到了Bridge模式。對於這個模式來說一共只需要32+4(不是32 x 4)個類就行了,當招商銀行想要加進來時,只需要加1個類,而不是32個。下面就來看看代碼:

 

   

  1. /*學生抽象類*/  
  2. abstract class Student{  
  3.     public abstract void doMethod(Method method);  
  4. }    
  5. /*本科生*/  
  6. class Granduate extends Student{  
  7.     public Granduate(){}  
  8.     public void doMethod(Method method){  
  9.         System.out.println("本科生");  
  10.         method.method();  
  11.     }  
  12. }   
  13. /*碩士生*/  
  14. class Master extends Student{  
  15.     public Master(){}  
  16.     public void doMethod(Method method){  
  17.         System.out.println("碩士生");  
  18.         method.method();  
  19.     }  
  20. }  
  21. /*發放辦法接口*/  
  22. interface Method{     
  23.     public void method();     
  24. }    
  25. /*方法實現1(Method1)*/  
  26. class Method1 implements Method{  
  27.     public void method(){  
  28.         System.out.println("助學金髮放辦法1");  
  29.     }  
  30. }    
  31. /*方法實現2(Method2)*/  
  32. class Method2 implements Method{  
  33.     public void method(){  
  34.         System.out.println("助學金髮放辦法2");  
  35.     }  
  36. }  
  37. /*Test*/  
  38. public class Test{  
  39.     public static void main(String[] args){  
  40.         Student s=new Master();  
  41.         s.doMethod(new Method2());    
  42.         /*使用方法2爲碩士生髮助學金*/  
  43.     }  
  44. }  

 

    個人認爲,Bridge模式的核心就是組合,把描述一個事物的各個維度用組合的方式放在一個基礎的維裏面,這樣就不必生成M*N*L... 這麼多個子類,另外就是需要保證當某一個維度的長度變長的時候不能更改其它類。總結起來就是兩點:

 

    1.把描述一個事物的所有維度放在一個類裏面;

    2.在某個或者某些維度的長度增加或者減少或者改變時,不能更改原有的類。

   

    滿足了上面兩個條件,也就實現了Bridge模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章