學習設計模式有一段時間了,一直沒有總結,今天開始慢慢的總結。首先介紹一下裝飾模式。
作用:
裝飾模式的功能就是動態的添加一些職能,同時不改變其結構。一般我們在擴展一個子類的時候經常使用繼承方式實現,但是隨着擴展功能的增多,如果不想在增加很多子類的情況下擴展類,就需要將具體的功能職責劃分,同時繼承裝飾模式。
Component:定義一個對象接口,可以給這些對象動態添加職責。ConcreteComponent是定義一個具體的對象,也可以給這個對象添加一下職責。Decorator,裝飾抽象類,繼承了Component,從外類來擴展Component類的功能,但對於Component來說,無需知道Decorator的存在。最後ConcreteDecorator就是具體的裝飾對象,起到動態添加職責的功能。
應用和優缺點:
應用:1)孫悟空的72變 2)魔幻手機之功能轉移:傻妞轉移功能後,小千擁有了所有傻妞的功能,但是同時還有自己的功能。
優點:裝飾類和被裝飾類可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類的功能。
缺點:多層裝飾比較複雜。
具體應用:
Component(抽象構件)
ConcreteComponent(具體構件):人類。聲明瞭基本對象的方法
【如果只有一個ConcreteComponent類而沒有抽象的Component類,那麼Decorator可以是Concretecomponent 的一個子類,同理,如果只有一個ConcreteDecorator類,那麼沒有必要建一個類,可以把Decorator和ConcreteDecorator的責任合併一個類】
Decorator(抽象裝飾類):可以桌子,椅子、壁紙等等,給具體構件增加職責,擴充其職能。
ConcreteDecorator(具體裝飾類):這裏指的是桌子,椅子之類的,繼承抽象裝飾類,實現其具體職能。
適用場景:動態的給某一個對象增加職能,如果繼承不方便擴展對象職能,裝飾模式會更加靈活。
含有抽象類的例子
學藝不精,請大家多多指點