《Javascript設計模式》讀書筆記之「裝飾者模式」

裝飾者模式用於透明的把對象包裝在具備一樣接口的對象中。對象

在不改變接口的狀況下,裝飾者模式比建立子類更合適。相較於建立子類,裝飾者模式能夠節省不少代碼。接口

裝飾者模式和組合模式有不少共同點,它們都用來包裝對象,它們都與所包裝的對象實現一樣的接口而且會把任何方法調用傳遞給這些對象。那麼兩者間有什麼區別呢,組合模式的目的是組織子對象並不修改方法調用,而裝飾者模式的目的是修改方法調用。基礎

裝飾者修改對象的方式有四種: 方法

  一、在方法調用以後添加行爲,原有行爲基礎上添加或修改返回結果參數

  二、在方法調用以前添加行爲,在原有行爲以前進行處理或者修改原有行爲的參數

  三、替換方法

  四、增長新方法

適用場景:

  須要爲類添加新特性或者功能,當派生子類不太現實時就應該使用裝飾者模式。派生子類不現實指新特性比較多且可任意組合時,這種狀況下仍然派生子類的話就會產生大量的子類、大量的代碼,給維護帶來麻煩。

裝飾者模式的主要缺點是它會破壞類型,當你的代碼基於類型檢查時就會出問題。再一個缺點就是略微複雜。

相關文章
相關標籤/搜索