天天看小說

第19章

時間:12月16日地點:大B房間人物:大B,校

都說學好普通話,走遍中國都不怕。就好像Anne來到我們班,如果說她只會說英文,那我們好大一部分同學都不一定聽得懂。可是她還會說中文,那以後和大家在一起溝通就好多了。就好比我們講的適配器。

大B:“師弟,你知道什麼是適配器模式嗎?”

小A:“就是把一個類的接口轉換成客戶端所期待的另一種接口,從而使原接口不匹配而無法在一起工作的兩個類能在一起工作。”

大B:“從功能上講這些接口不兼容的類一般具有相同或相似的功能。通常我們通過修改該類的接口來解決這種接口不兼容的情形,但是如果我們不願意爲了一個應用而修改各原有的接口,或者我們壓根就沒有原有對象的源代碼那該怎麼辦呢?此時Adapter模式就會派上大用場了。你能不能用代碼來實現吶?”

小A:“好。我試一下。”

如果有兩個編譯好的(無源代碼)類,類A有某些功能,但是需要一個xml讀取模塊才能工作,這個模塊要實現這個接口:

publicinterfaceXmlReader{

publicInputStreamxmlReader();

}

你的另一個類B恰好有這個功能,但是B實現的是這個接口:

publicinterfaceReaderXml{

publicInputStreamreaderXml();

}

這個時候我們的做法是寫個適配器

publicclassAdapterimplementsXmlReaderextendsB{

publicInputStreamxmlReader(){

returnreaderXml();

}

}

這個就是適配器模式了。

適配器模式還有另外一種實現方式

publicclassAdapterimplementsXmlReader

ReaderXmlb=newB();

publicInputStreamxmlReader(){

returnb.readerXml();

}

}

大B:“對,沒錯!上次有個朋友從美國給我帶回一個微波爐,但因爲美國的生活用電電壓是110V,而中國的電壓是220V,所以我不能使用,幸好朋友有先見之明,給我帶回一個變壓器,能把220V電壓轉換成110V電壓,我纔可以放心使用了。”

小A:“嘿嘿!師兄你那位朋友還挺有心的嘛!一定是位很要好的朋友吧?”

大B:“還不就是那個大學時候的死黨老E,那鳥人大學畢業後一直在國外,聽說最近要回來一趟哩!”

小A:“是嗎?那到時你們可爽了,又可以一起喝酒啦!”

大B:“嘿嘿!是啊!畢業幾年一直沒見過那鳥人,跑國外喝了幾年洋墨水,回來一定得好好宰他一頓。”

小A:“那是要的啦!”

大B:“對了,你編程學得不錯,能不能把剛纔我說的,也就是微波爐電壓轉換用代碼表示?”

小A:“好。通過適配,使c220類能在c110類中使用。”

程序代碼:

include《iostream.h》

classc220v

{

public:

voidDianYa220v()

{

cout《“220v電壓!”《endl;

}

};

classc110v

{

public:

virtualvoidDianYa110v()=0;

};

classadaper:publicc110v

{

private:

c220v*c220obj;

public:

adaper(c220v*obj)

{

c220obj=obj;

}

voidDianYa110v()

Wωω ¤ttκд n ¤c ○

{

c220obj->DianYa220v();

cout《“經變壓器轉換成”《endl;

cout《“110v電壓”《endl;

}

};

intmain()

{

c220v*c220vobj=newc220v;

adaperadobj(c220vobj);

adobj.DianYa110v();

return1;

}

運行結果:

220v電壓!

經變壓器轉換成

110v電壓

大B:“吼!非常不錯喔!”

第150章第7章第213章第66章第125章第17章第185章第81章第77章第214章第18章第126章第112章第210章第199章第142章第70章第34章第57章第202章第128章第31章第42章第86章第71章第41章第150章第44章第99章第146章第193章第21章第113章第48章第131章第42章第92章第202章第15章第150章第128章第33章第17章第78章第24章第216章第145章第70章第193章第149章第21章第178章第26章第94章第141章第51章第78章第47章第21章第26章第202章第49章第164章第85章第8章第70章第81章第175章第1章第159章第201章第52章第227章第140章第48章第57章第104章第136章第100章第220章第170章第205章第108章第63章第149章第159章第144章第95章第77章第82章第191章第141章第194章第41章第212章第146章第123章第84章第210章第56章
第150章第7章第213章第66章第125章第17章第185章第81章第77章第214章第18章第126章第112章第210章第199章第142章第70章第34章第57章第202章第128章第31章第42章第86章第71章第41章第150章第44章第99章第146章第193章第21章第113章第48章第131章第42章第92章第202章第15章第150章第128章第33章第17章第78章第24章第216章第145章第70章第193章第149章第21章第178章第26章第94章第141章第51章第78章第47章第21章第26章第202章第49章第164章第85章第8章第70章第81章第175章第1章第159章第201章第52章第227章第140章第48章第57章第104章第136章第100章第220章第170章第205章第108章第63章第149章第159章第144章第95章第77章第82章第191章第141章第194章第41章第212章第146章第123章第84章第210章第56章
主站蜘蛛池模板: 定南县| 调兵山市| 陵川县| 海门市| 柏乡县| 定陶县| 西贡区| 齐齐哈尔市| 偏关县| 广昌县| 连州市| 雅江县| 麻阳| 东乌珠穆沁旗| 青神县| 元谋县| 贡嘎县| 大姚县| 陆丰市| 孟连| 乌兰县| 繁峙县| 岐山县| 自贡市| 延川县| 蒲城县| 克什克腾旗| 武平县| 黑山县| 五台县| 林周县| 全南县| 紫阳县| 安顺市| 鱼台县| 固安县| 德保县| 泗阳县| 酒泉市| 禹州市| 涞水县|