結構型模式----裝飾模式

           學習設計模式有一段時間了,一直沒有總結,今天開始慢慢的總結。首先介紹一下裝飾模式。

 作用:

          裝飾模式的功能就是動態的添加一些職能,同時不改變其結構。一般我們在擴展一個子類的時候經常使用繼承方式實現,但是隨着擴展功能的增多,如果不想在增加很多子類的情況下擴展類,就需要將具體的功能職責劃分,同時繼承裝飾模式。

        Component:定義一個對象接口,可以給這些對象動態添加職責。ConcreteComponent是定義一個具體的對象,也可以給這個對象添加一下職責。Decorator,裝飾抽象類,繼承了Component,從外類來擴展Component類的功能,但對於Component來說,無需知道Decorator的存在。最後ConcreteDecorator就是具體的裝飾對象,起到動態添加職責的功能。

應用和優缺點:

        應用:1)孫悟空的72變    2)魔幻手機之功能轉移:傻妞轉移功能後,小千擁有了所有傻妞的功能,但是同時還有自己的功能。

優點:裝飾類和被裝飾類可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類的功能。

缺點:多層裝飾比較複雜。

具體應用:

Component(抽象構件

ConcreteComponent(具體構件):人類。聲明瞭基本對象的方法

【如果只有一個ConcreteComponent類而沒有抽象的Component類,那麼Decorator可以是Concretecomponent 的一個子類,同理,如果只有一個ConcreteDecorator類,那麼沒有必要建一個類,可以把Decorator和ConcreteDecorator的責任合併一個類】

Decorator(抽象裝飾類):可以桌子,椅子、壁紙等等,給具體構件增加職責,擴充其職能。

ConcreteDecorator(具體裝飾類):這裏指的是桌子,椅子之類的,繼承抽象裝飾類,實現其具體職能。

適用場景:動態的給某一個對象增加職能,如果繼承不方便擴展對象職能,裝飾模式會更加靈活。                                   

                                       含有抽象類的例子

                                 學藝不精,請大家多多指點

 

 

 

 

 

 

 

 

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章