1、定義
將乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。
2、spring例項
advice(通知)的型別有:beforeadvice、afterreturningadvice、threowsadvice的。
在每個型別advice(通知)都有對應的***:methodbeforeadviceinterceptor、afterreturningadviceinterceptor、throwsadviceinterceptor。
spring需要將每個advice(通知)都封裝成對應的***型別,返回給容器,所以需要使用介面卡模式對advice進行轉換。
advice -->adapter-->intecepter
具體的**:
advice介面
public
inte***ce
methodbeforeadvice
extends
beforeadvice
adapter介面
public
inte***ce advisoradapter
具體adapter類
class
methodbeforeadviceadapter
implements
advisoradapter, serializable
public methodinterceptor getinterceptor(advisor advisor)
}
defaultadvisoradapterregistry類:用adapter將advice轉換成intecepter
public
class
defaultadvisoradapterregistry
implements
advisoradapterregistry, serializable
public advisor wrap(object adviceobject) throws unknownadvicetypeexception
if (!(adviceobject instanceof advice))
advice advice = (advice) adviceobject;
if (advice instanceof methodinterceptor)
for (advisoradapter adapter : this.adapters)
} throw
new unknownadvicetypeexception(advice);
} public methodinterceptor getinterceptors(advisor advisor) throws unknownadvicetypeexception
for (advisoradapter adapter : this.adapters)
} if (interceptors.isempty())
return interceptors.toarray(new methodinterceptor[interceptors.size()]);
} public
void
registeradvisoradapter(advisoradapter adapter)
}
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...