裝飾模式優點:將類中原有的裝飾功能移出,作為單獨的乙個或幾個物件。簡化了原有的類,同時又可以動態的為類增加某一項或某幾項裝飾,而不必修改原類。有效的把類的核心職責和裝飾功能區分開來,並且去除相關類中重複的裝飾邏輯。同時讓類在某些特定的時候,才擁有某些特定的功能。
常用場景:加密資料、過濾詞彙。
裝飾模式中的角色可以分為:
1、component:物件介面,可以對物件動態的新增裝飾。是所有類的頂端介面。
2、decorator:裝飾類。是所有裝飾物件的父類。在這裡set和get被新增裝飾的物件。
3、concrete:具體的物件,可以被新增裝飾。
4、decoratora:具體裝飾類。類中有特有的裝飾,可以新增給具體的物件。
例子:component
inteface component
concrete
publicclass
concrete implement component
}
decorator
publicclass
decorator implement component
public
void
setcomponent(component component)
public
component getcomponent()
public
void
say()
}}
decoratora
publicclass
decoratora extend decorator
public
void
say()
}
客戶端
publicstatic
void
main(string args)
**執行後,輸出結果:
我是concrete
我被裝飾了方法a在裝飾模式中,裝飾類可以有多個,例如decoratorb,decoratorc,decoratord。這些裝飾類可以被自由地動態地為物件增加某些功能,並且互不影響,且不影響原功能。
如果用來被裝飾的物件只有一種,則decorator類可以直接繼承被裝飾的物件。component不是必要存在的。
大話設計模式 裝飾模式
動態地給乙個物件新增一些額外的職責。優點 把類中的裝飾功能從類中搬移出去,這樣可以簡化原有的類。有效地把類的核心功能和裝飾功能區分開了。解決的問題 已經開發完畢的物件,後期由於業務需要,對舊的物件需要擴充套件特別多的功能,這時候使用給物件動態地新增新的狀態或者行為 即裝飾模式 方法,而不是使用子類靜...
大話設計模式 裝飾模式
前言穿衣打扮是現在的時尚潮流,我們時常刷 來不斷滿足自己的打扮需求,買個帽子 換條褲子 整雙時尚鞋。需求是沒有極限的,無止境的購物,只要存在這個平台那麼這些裝飾性的購物是不可避免的。這在我們軟體開發中可以看做是為我們例項化的物件新增一些額外的功能,要是我們對於每個都定義個子類來繼承的話,那就是指數增...
大話設計模式 裝飾模式
裝飾模式 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。裝飾模式的uml類圖 component是定義乙個物件介面,可以給這些物件動態的新增職責。concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責。decorator,裝飾抽象類,...