設計原則
1、類應該對擴充套件開發,對修改關閉。
特點:
1
、裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。 2
、裝飾物件包含乙個真實物件的引用(reference)。 3
、裝飾物件接收所有來自客戶端的請求,它把這些請求**給真實的物件。 4
、裝飾物件可以在**這些請求之前或之後附加一些功能。
這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能
優點:動態的給乙個物件新增一些額外的職責,就擴充套件功能而言,比生成子類方式更為靈活。
缺點:利用裝飾器模式,常常造成設計中有大量的小類,數量實在太多,可能會造成使用此api程式設計師的困擾。例如:io流
適用裝飾者模式場合:1.當我們需要為某個現有的物件,動態的增加乙個新的功能或職責時,可以考慮使用裝飾模式。
2.當某個物件的職責經常發生變化或者經
動態的給乙個物件新增一些額外的職責
,就擴充套件功能而言比生成子類方式更為靈活
動態的給乙個物件新增一些額外的職責
,就擴充套件功能而言比生成子類方式更為靈活
動態的給乙個物件新增一些額外的職責
,就擴充套件功能而言比生成子類方式更為靈活
詳情請參考:
裝飾器模式 decorator
所有的說明和解釋都在 中有注釋來標明 package mode.decorator 這裡定義乙個介面,在介面中定義我們要執行的操作。以後所有的裝飾器以及我們要裝飾的物件都要實現這個介面。有了這樣的大前提,我們就可以其用 sourcable來定義我們的裝飾器和要裝飾的物件了 public inte c...
裝飾器模式(Decorator)
裝飾器模式的作用 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾器模式比生成子類更加靈活。裝飾器模式結構圖 各個類或介面的職能 component是定義乙個物件介面,可以給這些物件增加功能。concretecomponent定義乙個具體的物件。decorator是裝飾抽象類,為物件增加功能...
裝飾器模式(Decorator)
這裡似乎可以解釋之前的乙個疑惑 裝飾器模式與物件的介面卡模式的異同 相同點 都擁有乙個目標物件 不同點 介面卡模式需要實現另外乙個介面,而裝飾器模式必須實現該物件的介面 換句話說,介面卡模式就是把乙個物件是配成另乙個物件,而裝飾器模式將豐富目標物件的功能但不改變它的介面 裝飾器的核心思想 decor...