ADAPTER —在朋友聚會(huì)上碰到了一個(gè)美女Sarah,從香港來(lái)的,可我不會(huì)說(shuō)粵語(yǔ),她不會(huì)說(shuō)普通話,只好求助于我的朋友kent了,他作為我和Sarah之間的Adapter,讓我和Sarah可以相互交談了(也不知道他會(huì)不會(huì)耍我)
個(gè)人理解,適配器模式,就是兩個(gè)水管A(Target)和C(Adaptee)接口不匹配不兼容,就拿另外一截管子B(Adapter),一頭接上原本的水管A(繼承),另一頭接上C(調(diào)用)。那么,A通過(guò)B,和C接上了。
public interface Target {
public void methodA();
}
public class Adaptee {
public void methodB() {
//do something...
}
}
public class Adapter extends Target {
private Adaptee ee;
public Adapter(Adaptee ee) {
this.ee = ee;
}
public void methodA() { //水管C Adapter的接口
ee.methodB(); //實(shí)際調(diào)用了水管B Adaptee的接口
}
}
Adapter和Proxy的區(qū)別:
adapter是適配adaptee和target之間的關(guān)系,proxy是realSubject對(duì)subject的代理。
adaptee和target無(wú)關(guān)系,realSubject和subject有繼承關(guān)系。這就是他們的區(qū)別。
這里有篇文章很不錯(cuò),鏈接一下:
http://yichao.blog.edu.cn/user2/yichaozhang/archives/2006/1501606.shtml
又找到網(wǎng)上另一個(gè)見(jiàn)解:
proxy 和adapter有一定類似,都是屬于一種銜接性質(zhì)的。
區(qū)別是很明顯的,從大體上說(shuō):proxy是一種原來(lái)對(duì)象的代表,其它需要與這個(gè)對(duì)象打交道的操作都是和這個(gè)代表交涉,就象歌星的經(jīng)紀(jì)人一樣。
adapter目的則不是要虛構(gòu)出一個(gè)代表者,而是為應(yīng)付特定使用目的,將原來(lái)的類進(jìn)行一些組合。
posted on 2008-01-31 14:28
EvanLiu 閱讀(1398)
評(píng)論(0) 編輯 收藏 所屬分類:
設(shè)計(jì)模式