| 作者 |
内容 |
| 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 |
酷帖! 臭帖! 回复 |
| 酷帖评价: 臭帖评价: |
| 返回页首 |
|