都說學好普通話,走遍中國都不怕。就好像Anne來到我們班,如果說她隻會說英文,那我們好大一部分同學都不一定聽得懂。可是她還會說中文,那以後和大家在一起溝通就好多了。就好比我們講的適配器。
大B:“師弟,你知道什麼是適配器模式嗎?”
小A:“就是把一個類的接口轉換成客戶端所期待的另一種接口,從而使原接口不匹配而無法在一起工作的兩個類能在一起工作。”
大B:“從功能上講這些接口不兼容的類一般具有相同或相似的功能。通常我們通過修改該類的接口來解決這種接口不兼容的情形,但是如果我們不願意為了一個應用而修改各原有的接口,或者我們壓根就沒有原有對象的源代碼那該怎麼辦呢?此時Adapter模式就會派上大用場了。你能不能用代碼來實現呐?”
小A:“好。我試一下。”
如果有兩個編譯好的(無源代碼)類,類A有某些功能,但是需要一個xml讀取模塊才能工作,這個模塊要實現這個接口:
你的另一個類B恰好有這個功能,但是B實現的是這個接口:
這個時候我們的做法是寫個適配器
這個就是適配器模式了。
適配器模式還有另外一種實現方式
大B:“對,沒錯!上次有個朋友從美國給我帶回一個微波爐,但因為美國的生活用電電壓是110V,而中國的電壓是220V,所以我不能使用,幸好朋友有先見之明,給我帶回一個變壓器,能把220V電壓轉換成110V電壓,我才可以放心使用了。”
小A:“嘿嘿!師兄你那位朋友還挺有心的嘛!一定是位很要好的朋友吧?”
大B:“還不就是那個大學時候的死黨老E,那鳥人大學畢業後一直在國外,聽說最近要回來一趟哩!”
小A:“是嗎?那到時你們可爽了,又可以一起喝酒啦!”
大B:“嘿嘿!是啊!畢業幾年一直沒見過那鳥人,跑國外喝了幾年洋墨水,回來一定得好好宰他一頓。”
小A:“那是要的啦!”
大B:“對了,你編程學得不錯,能不能把剛才我說的,也就是微波爐電壓轉換用代碼表示?”
小A:“好。通過適配,使c220類能在c110類中使用。”
程序代碼:
cout《“220v電壓!”《endl;
};
};
cout《“經變壓器轉換成”《endl;
cout《“110v電壓”《endl;
};
運行結果:
220v電壓!
(本章完)