有些類被final修飾的類,想繼承進行方法的擴充,但卻不能被繼承。
有些類想使用它的方法,但是卻又不想繼承,
這兩種情況就是裝飾者的應用場景:
本質就是將該類,成員變數的方式實現呼叫方法,並進行補充
**實現:
inte***ce factory
//基礎類實現該介面,返回「商品」的字串
final class basefactory implements factory
}//物件介面卡,繼承對外的介面,定義乙個成員功能介面,呼叫成員功能類的方法
abstract class decoration implements factory
@override
public string productfunction()
}//裝飾者實現類繼承介面卡類,重寫方法
class decorationimpl extends decoration
@override
public string productfunction()
}class otherdecorationimpl extends decoration
@override
public string productfunction()
}public class decorator
}
裝飾者模式 跟 介面卡模式
裝飾者模式,為原物件增加功能時使用,裝飾者模式是針對介面實現的,下面是裝飾者模式的結構圖。針對compoment這個介面進行實現,classa跟decorator都實現compoment這個介面,確保覆寫func 方法,裝飾者本身是不提供功能的,它只是對原有功能的追加,所以裝飾者必須要持有原有的物件...
裝飾者模式 橋接模式 介面卡模式
在開發過程中,為了擴充套件乙個類的功能我們通常使用繼承乙個子類來實現。但是當擴充套件的功能過多時,則可能出現子類過多,類圖過於膨脹。所以我們使用裝飾者模式來避免這個問題。裝飾者模式提供了一種給乙個類新增職責的方法,它比使用繼承更加靈活,因為它能將職責加到類的指定例項中,它也允許定製乙個類,而無需在繼...
包裝模式(介面卡模式和裝飾者模式)
先看乙個圖 mybatis中的cache 通過對 cache的實現進行了進一步包裝,就可以實現多種多樣的功能,如lru,fifo等快取淘汰策略 點選 synchronizedcache 可以看到,這個是給 方法加上了 synchronized 不同的包裝類,實現了對應特定業務的功能 優點 能提高類的...