Posted on 2007-11-20 17:04
game of programming 閱讀(825)
評論(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得到了重用,而不是完全丟棄去重寫。