作者 内容
 fireangel   请教potian大虾:相对与对象型Adapter模式,类Adapter模式存在的意义

---由于类Adapter模式通过继承实现,这使得Adapter只能和Adaptee匹配,我们将不可能对Adaptee的子类也进行匹配。
---而对象Adapter模式没有这个问题,由于是通过指向Adaptee的指针(C++中)的手段实现,所以可以方便的匹配到Adaptee的所有子类。
---那么,请问类Adapter模式存在的意义是什么?

敬请指点。
 01/09/10 12:48 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 potian  回复: 请教potian大虾:相对与对象型Adapter模式,类Adapter模式存在的意义

比较优缺点,还是有的,最大的问题双向匹配的问题,如果需要一个系统的Target变成另外一个系统的Adaptee,它的adaptee变成Target,我想类匹配应当是最简洁的实现方式(对象匹配可能需要两个)。
Adapter和Adaptee有了父子关系以后,Adapter可以直接覆盖Adapter的部分行为,如果直接用分派的话,那么,对不起,请你先继承一个Adaptee的子类,然后把你的指针指向那个子类。
其它的开销问题我觉得问题到不是太大。还有一个问题就是语言和设计模式的问题,其实想很多设计模式,如果语言有这方面功能,几乎是可以不用的。譬如visitor模式,如果Java具有Closure的概念,那么就简单的不用简单了。所以,我认为,随着设计模式地进一步深入研究,形式化,它会对语言产生直接的影响。设计模式经常在讨论如何避免增加类层次以及不需要继承(静态结构)就可以实现继承的问题,但是又可以有继承的感觉。这里的Object Adapter也是一例。
最近在C++非常流行的GP可以说是一种重大的改进和发展,其实也是在研究这些问题。Java 的GP不久也将纳入标准。
 01/09/10 13:45 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 wwh0058  回复: 书上说的很清楚--potian大侠指正


书上说的很清楚啊:

类Adapter可以重定义Adaptee的部分行为,作为代价就不能匹配Adaptee的子类。也只有这一点好处吧,我觉得还是对象Adapter更有实际用途。

如果在效率上吹毛求疵的话,可能类Adapter稍微好些。

 01/09/10 13:57 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 fireangel   谢谢,但是你有句话我不明白

----双向匹配问题是类Adapter模式的优势

----但是我明白这句话的意思:"Adapter和Adaptee有了父子关系以后,Adapter可以直接覆盖Adapter的部分行为,如果直接用分派的话,那么,对不起,请你先继承一个Adaptee的子类,然后把你的指针指向那个子类。"

----用对象Adapter模式干吗要先实现一个Adaptee的子类?如果用对象Adapter模式需要继承才能实现的情况,那就是对子类进行匹配,用类Adapter模式没法解决吧?
 01/09/10 18:10 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首
 fireangel   回复: 书上说的很清楚--potian大侠指正

我觉得还是象potian大虾说的那样:双向匹配才是类Adapter模式的优越性。
 01/09/10 18:17 酷帖!    臭帖!    回复  
酷帖评价:           臭帖评价:
返回页首