基於介面卡模式下的裝飾者模式

2021-10-01 18:48:12 字數 686 閱讀 3194

有些類被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 不同的包裝類,實現了對應特定業務的功能 優點 能提高類的...