包裝模式(介面卡模式和裝飾者模式)

2022-05-26 18:30:07 字數 1592 閱讀 9002

先看乙個圖

mybatis中的cache

通過對 cache的實現進行了進一步包裝,就可以實現多種多樣的功能,如lru, fifo等快取淘汰策略

點選 synchronizedcache 可以看到,這個是給 方法加上了 synchronized , 不同的包裝類,實現了對應特定業務的功能

優點:

能提高類的透明性和復用,現有的類復用,但不需要改變目標類和介面卡類解耦,提高程式的擴充套件性符合開閉原則

缺點:

介面卡編寫需要全面考慮,可能增加系統的複雜性增加系統**可讀的難度

介面卡的種類:

物件介面卡類介面卡

介面卡模式可以 結合 門面模式對比看看:

都是對現有的類進行封裝, 門面模式是定義乙個新的介面

而介面卡模式則是復用 介面(舊介面,舊實現)的方法

從粒度上看:

外觀模式是用來適配整個子系統,而介面卡模式的粒度更小

裝飾者模式 跟 介面卡模式

裝飾者模式,為原物件增加功能時使用,裝飾者模式是針對介面實現的,下面是裝飾者模式的結構圖。針對compoment這個介面進行實現,classa跟decorator都實現compoment這個介面,確保覆寫func 方法,裝飾者本身是不提供功能的,它只是對原有功能的追加,所以裝飾者必須要持有原有的物件...

介面卡 Adapter 模式 包裝模式

介面卡 adapter 模式也叫包裝模式,主要有兩種實現形式 a 類介面卡模式 b 物件介面卡模式 都有三種角色 1 target 供客戶端呼叫 2 adaptee 具體呼叫角色 3 adapter 包裝角色 a 類介面卡模式 繼承 package com.pattern.adapter.class...

裝飾者模式 橋接模式 介面卡模式

在開發過程中,為了擴充套件乙個類的功能我們通常使用繼承乙個子類來實現。但是當擴充套件的功能過多時,則可能出現子類過多,類圖過於膨脹。所以我們使用裝飾者模式來避免這個問題。裝飾者模式提供了一種給乙個類新增職責的方法,它比使用繼承更加靈活,因為它能將職責加到類的指定例項中,它也允許定製乙個類,而無需在繼...