天天看點

《設計模式》學習筆記——橋接模式

《設計模式》學習筆記——橋接模式

橋接模式的定義是将抽象部分與實作部分分離,使它們都可以獨立地變化。

這是什麼意思?抽象與實作不是本來就分離的嗎?比如父類是抽象類,子類是具體實作類。

其實在橋接模式裡,主要是用于處理2個或以上次元會變化的情況。比如畫筆有大、中、小三種,然後可以蘸上各種顔色進行畫畫,那麼存在兩個次元:畫筆大小,顔色。用橋接模式來處理,抽象類處理一個次元,而實作類處理另一個次元,抽象類與實作類不是繼承關系,而是關聯關系。橋接模式用合成複用代替了繼承。所謂的“橋”,就是指關聯。

《設計模式》學習筆記——橋接模式

我估計,如果有多個次元,那麼抽象類仍然隻處理其中一個次元,而每個次元都有一個實作類,然後關聯到抽象類。

說到關聯,橋接模式和裝飾模式何其相似!

如果硬是要說差別,

橋接模式:

class Client {  
    public static void main(String args[]) {  
        Image image;//對應抽象類  
        ImageImp imp;
        image = (Image)XMLUtil.getBean("image");  
        imp = (ImageImp)XMLUtil.getBean("os");  
        image.setImageImp(imp);  //選用具體的實作類
        image.parseFile("小龍女");  
    }  
}      

裝飾模式

class Client
{
       public  static void main(String args[])
       {
              Component  component,componentSB,componentBB; //全部使用抽象構件定義
              component = new Window();
              componentSB = new  ScrollBarDecorator(component);
              componentBB = new  BlackBorderDecorator(componentSB); //将裝飾了一次之後的對象繼續注入到另一個裝飾類中,進行第二次裝飾
              componentBB.display();
       }
}      

多輪裝飾之後,傳回來的還是那個對象。要不怎麼叫裝飾呢,牆壁粉刷多少遍,它都是那堵牆。你大媽早已不是你大媽,但你大爺始終都是你大爺。

由以上比較可知,

繼續閱讀