天天看點

裝飾模式設計模式之裝飾模式

設計模式之裝飾模式

裝飾模式:動态地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活

-----《大話設計模式》

通過一個例子來實作

現在有一個寶馬車接口,裡面有定價,定型号這兩個功能

裝飾模式設計模式之裝飾模式

之後寶馬車推出了4系,要定價,隻需要實作這個接口并覆寫方法就可以完成定價了

裝飾模式設計模式之裝飾模式

我們先來測試下

裝飾模式設計模式之裝飾模式

但是随後 寶馬又推出了5系列,但是我們不能直接繼承車類,此時就出現了裝飾器類,我們讓裝飾器去實作車接口,再有寶馬5系列去繼承裝飾器類,通過構造器的調用來實作這樣一個功能

裝飾模式設計模式之裝飾模式
裝飾模式設計模式之裝飾模式

此處使用構造方法的好處就是每次不需要建立空對象,之後在進行分别指派,隻需要建立對象的時候也進行對象指派,并且能夠自定義參數的多少,是以也比較靈活。

裝飾器模式有很大的缺點,從我寫的代碼來看就能發現

就是可讀性太差了,一個接着一個

它的優點就是裝飾類和被裝飾類是可以獨立發展的,不會互相耦合,相當于另一種繼承,可以擴充一個類實作的功能

以下附上此次代碼的結構圖

裝飾模式設計模式之裝飾模式

例子舉得不是特别好,重要的是對原有功能擴充,這裡展現的不是特别好

有錯還望指正,共勉

繼續閱讀