Well,這幾天在看O'Reilly的ActionScript 3.0 Design Patterns.英文版的說
。主要還是,I'm sick of the translation edition.
不過看英文版的書,感覺很難進入腦子......So,take notes......
?
今天主題是“Decorator Pattern,裝飾模式”的原理。
-
什么是裝飾模式?
?
原文
:The Decorator pattern addresses the issue of maintaining the structure while having
the ability to make changes by decorating the different components that make up the
application. The decorations are composed of descriptions and/or methods used to
wrap different objects in the application. As you will see, this design pattern allows
you to mix and match all the different components and decorations to optimize flexibility
and expandability, while core structure classes remain unaltered.
翻譯 :裝飾模式強調(diào),在保留程序原有結(jié)構(gòu)的同時,通過裝飾程序中的不同組件,來實現(xiàn)程序功能的更改。這些"裝飾用品"由用于包裝不同對象的說明和方法組成。正如你所看到的,裝飾模式允許你通過混合使用不同的"組件"和"裝飾",來優(yōu)化程序的靈活性和延展性,同時程序的核心結(jié)構(gòu)保持不變。
-
裝飾模式的特點
(1)??? 裝飾對象和真實對象有相同的接口。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。
(2)??? 裝飾對象包含一個真實對象的索引(reference)
(3)??? 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉(zhuǎn)發(fā)給真實的對象。
-
?裝飾模型-The Decorator Model
看圖:
1.其中
Component、
Decorator
兩個類是抽象類。名字帶有Concrete的都是派生類。
2. Component 是 Decorator 的父類。
這樣就是說,無論是 Concrete Component 抑或是 Decorator 和 Concrete Decoration ,這些類的父類(父父類)都是 Component 。
上面的圖顯示,一個
Concrete Component
被一個
Concrete Decorator
裝飾后變成#1,之后又被裝飾成#2、#3。而最終,#3仍然是一個
Component
類的實例。這樣被裝飾過的對象依然能被同一個變量所引用。
-
什么時候用Decorator Pattern?
當你希望你的子類有各自的特性,并且不想通過修改父類實現(xiàn)的時候,就可以用裝飾模式。
?
-
一句話概述:
裝飾模式使你能在不修改父類的情況下(即保持原程序設(shè)計不變),給子類添加不同的功能。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
