Posted on 2007-11-20 17:04
game of programming 阅读(811)
评论(0) 编辑 收藏 所属分类:
Design Pattern
《设计模式》一书中对Adapter模式的解释为:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
Adapter模式的UML图如下所示:
如图所示,Client希望通过一个统一的方式来调用Adaptee所提供的接口,但是Adaptee所提供的接口和Client所规定的接口规则并不一致,所以可以通过Adapter来进行适配。
Adapter模式也是经常被用到的模式,它经常用来保持多态性。比如做一个画图程序Client,要求能够画出Circle、Rectangle和Hentagon,并且定义统一的接口display()和erase()。现在已经有一个能够画出Hentagon的类XXXHentagon,但是XXXHentagon提供的接口与Client所要求的接口规则不一致。为了能够重用XXXHentagon已经实现的功能,可以使用Adapter模式来将XXXHentagon适配成符合Client接口规则的Hentagon类。如下图所示:
如上图所示,采用Adapter模式具有以下好处(相比与不使用任何模式):
1 Client不用需要考虑如何去display/erase图形,它只需要将相关参数交给Shape即可;
2 Pentagon(Adapter)保持了类层次的多态性;
3 XXXPentagon得到了重用,而不是完全丢弃去重写。