首先給大家講一個小故事,從前有一個小紅,長的不是特別漂亮,所以他每天都靠化妝來維持自己的眉毛,或者靠美圖秀秀(哈哈哈哈)但是在她心里一直有一個特別喜歡的男生,這個男生每次出現的時候都是穿著白襯衫,站在陽光底下,白皙的皮膚,高高的個子,利索的頭型,(ps我想象的啊,哈哈哈),由于小女孩特別的羞澀,所以一直不敢表白,一直通過自己的閨蜜向男孩送禮物。(這個故事沒有結局,可在留言自己寫下結局。哈哈哈哈) (如有異同請指出)
通過剛剛講的故事,我來為大家簡述關于什么是裝飾模式,由于小紅不漂亮,所以他一直通過化妝和美圖來對自己進行裝飾,化妝和美圖就是裝飾模式的具體實現方法,在小紅化妝的過程中他自動擴展自己化妝的工具用品,也就是為了包裹真實的自己。
裝飾模式UML 

由于小紅特別的害羞所以送禮物的時候一直都是通過自己朋友來傳送里物,在這里小紅的朋友變就是代理,如果想具體了解,可點擊代理模式 代理模式
UML圖 
相似之處
對裝飾模式來說,裝飾者和被裝飾者都實現同一個接口;對代理模式來說,代理類和真實處理的類都實現同一個接口 他們都屬于是結構型模式,結構模式型的定義是:采用繼承機制和來組合接口和實現,結構型對象模式采用組合聚合來組合對象實現新功能,可以在運行時刻改變對象組合關系,具有更大靈活性
功能區別: 裝飾模式:從功能上看:再不改變接口的前提下,動態擴張對象的功能,不但有繼承而且可以有聚合
代理模式:在不改變接口的前提下,控制對象的訪問,直接對代理的類訪問 裝飾模式強調的是可擴展,A對象的B方法,在調用B方法的時后,會實現新的功能,效果會與原來不一樣,只有繼承 代理模式:在調用B方法前后,控制怎么訪問B方法的原始數據,而對于B實現的功能效果不能做修改,應該他是代理,原數據沒有改,那么代理就更不能改了。 其實,它們的著重點一個在于“增加”職責,另一個在于“控制”訪問。這是它們最本質的區別。 代碼區別: 裝飾模式跟代理模式代碼的最大的在于他們的構造方法,代理模式的構造方法不傳參數,在構造方法內部完成參數傳遞,裝飾模式將裝飾的對象作為參數傳進去。
新聞熱點
疑難解答