歡迎轉(zhuǎn)載,共同進(jìn)步。請(qǐng)注明出處:http://www.reibang.com/u/e627f27f75b7
簡(jiǎn)介
正如其名轨香,適配器显歧,就是將本來(lái)不適用于當(dāng)前接口的類包裝成適用于當(dāng)前接口的類。比如電源適配器确镊,我們?nèi)粘S秒娛?20V交流電士骤,而有很多電器不需要這么高的電壓,于是電源適配器將220V的電壓轉(zhuǎn)換成電器需要的電壓蕾域,這是電源適配器做的事拷肌,也是適配器模式要做的事。
適配器的UML圖旨巷,圖片來(lái)自puppet_master
示例
廢話不多說(shuō)巨缘,直接上代碼,以電源適配為例:
//220V插座
class Socket220V{
? ? Applicance220V socket; ?? //220V電器
? ? public void AddApplicance(Applicance220V applicance){
? ? ? ? socket = applicance;
? ? }
? ? public void Work(){
? ? ? ? socket.Work();
? ? }
}
//220V電器
class Applicance220V{
? ? public void Work(){
? ? ? ? print("220V電器正常運(yùn)行");
? ? }
}
//電源適配器
class Adapter : Applicance220V{
? ? ApplicanceOther applicance;
? ? public Adapter(ApplicanceOther applicance){
? ? ? ? this.applicance = applicance;
? ? }
? ? public void Work(){
? ? ? ? //做一些適配工作
? ? ? ? applicance.Work();
? ? ? ? print("其它電壓電器也正常運(yùn)行");
? ? }
}
在想要使用非220V電壓的電器對(duì)象時(shí)采呐,將此對(duì)象作為參數(shù)構(gòu)造一個(gè)適配器若锁,再使用這個(gè)適配器,即可完成在220V電壓下使用非220V電壓電器的目的斧吐。(注意適配器實(shí)際上是220V電器的子類又固,所以可以在適配完成后作為220V電器插入220V插座中運(yùn)行)
總結(jié)
最后來(lái)總結(jié)適配器模式的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1、可以很好地復(fù)用現(xiàn)有的類對(duì)象煤率,不需要重復(fù)開發(fā)仰冠,有很好的復(fù)用性。
2蝶糯、符合開放封閉原則洋只,增加而不修改。
3昼捍、由于適配器類是適配者類的子類识虚,因此可以在適配器類中置換一些適配者的方法,使得適配器的靈活性更強(qiáng)端三。
缺點(diǎn):
1舷礼、適配器是一種補(bǔ)償型的模式,如果可以提前將接口設(shè)計(jì)得統(tǒng)一的話郊闯,完全不需要適配器模式妻献。(但是往往沒(méi)辦法考慮得這么周到)
參考文獻(xiàn)
http://blog.csdn.net/puppet_master/article/details/51326210
文章如有錯(cuò)誤,歡迎指正团赁。