裝飾模式學習和思考

2021-08-09 22:29:58 字數 487 閱讀 9952

1.概念

裝飾模式(decorator):動態地給乙個物件新增一些額外的職責。就增加功能來說,裝飾模式比生成子類更加靈活。

理解:如果我們需要給父類新增一些額外功能的話,自然想到繼承,隨意擴充套件,但是一旦擴充套件了就不能修改了,是一種靜態的擴充套件。如果恰恰我們需要很頻繁地擴充套件,而且每次擴充套件出來的方案又不會使用多次。如果此時不同使用繼承,會生成很多無用的類,或者生成很多不會多次使用的類。擴充套件性不好而且**維護麻煩,也不優美。那能否使用動態的方式實現呢?避免了上面的尷尬。

裝飾模式就應運而生了。舉個列子:首先我們有乙個父類叫person類,裡面有getdesc()

方法,就是展示具體做法是,首先新建乙個decorator類也繼承person類,以後增加的新功能類都繼承decorator類,構造函式引數都是person型別的,有乙個屬性localperson,構造函式引數直接賦值給localperson,在getdesc()中將自己的描述和localperson的描述方法整合起來。這樣形成乙個描述鏈。

設計模式之裝飾器模式的學習思考

裝飾器模式 decorator pattern 屬於設計模式裡的結構型模式一種。白話地說,我們可以給乙個類加一些它沒有的功能 比如 給乙個圓加上顏色 給手機增加上網的功能等等 它的實現思想 小例子 inte ce shape class rectangle implements shape clas...

狀態模式學習和思考

狀態模式 允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。在很多情況下,乙個物件的行為取決於乙個或多個動態變化的屬性,這樣的屬性叫做 狀態,這樣的物件叫做 有狀態的 stateful 物件,這樣的物件狀態是從事先定義好的一系列值中取出的。當乙個這樣的物件與外部事件產生互動時,...

外觀模式學習和思考

1.概念 外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。2.理解 外觀模式主要解決系統內和系統外的通訊問題,一般是系統外需要訪問系統內的多個方法 介面 單項的居多,類似於系統內為系統外提供服務那樣。增加的facade類裡...