資源描述:
《第12適配器模式和外觀模式.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第十二章適配器模式和外觀模式適配器1面向?qū)ο筮m配器2適配鴨子的火雞publicinterfaceDuck{publicvoidquack();publicvoidfly();}publicclassMallardDuckimplementsDuck{publicvoidquack(){System.out.println("Quack");}publicvoidfly(){System.out.println("I'mflying");}}鴨子接口,具備呱呱叫和飛行能力。綠頭鴨是鴨子的子類。3適配鴨子的火雞(續(xù))publ
2、icinterfaceTurkey{publicvoidgobble();publicvoidfly();}publicclassWildTurkeyimplementsTurkey{publicvoidgobble(){System.out.println("Gobblegobble");}publicvoidfly(){System.out.println("I'mflyingashortdistance");}}火雞不會(huì)呱呱叫,只會(huì)咯咯叫。火雞也會(huì)飛,雖然飛不遠(yuǎn)?;痣u的一個(gè)具體實(shí)現(xiàn)。4火雞適配器假定缺鴨子對(duì)象,用火
3、雞對(duì)象來冒充,需要為火雞對(duì)象寫一個(gè)適配器。publicclassTurkeyAdapterimplementsDuck{Turkeyturkey;publicTurkeyAdapter(Turkeyturkey){this.turkey=turkey;}publicvoidquack(){turkey.gobble();}publicvoidfly(){for(inti=0;i<5;i++){turkey.fly();}}}火雞飛行距離短,連續(xù)5次調(diào)用火雞的fly()方法。構(gòu)造器獲得適配對(duì)象的引用。5測(cè)試適配器publi
4、cclassDuckTestDrive{publicstaticvoidmain(String[]args){MallardDuckduck=newMallardDuck();WildTurkeyturkey=newWildTurkey();DuckturkeyAdapter=newTurkeyAdapter(turkey);System.out.println("TheTurkeysays...");turkey.gobble();turkey.fly();System.out.println("TheDucksa
5、ys...");testDuck(duck);System.out.println("TheTurkeyAdaptersays...");testDuck(turkeyAdapter);}staticvoidtestDuck(Duckduck){duck.quack();duck.fly();}}火雞包裝進(jìn)火雞適配器中,使它看起來象一只鴨子。測(cè)試火雞。測(cè)試?guó)喿?。測(cè)試適配器:傳入一個(gè)假裝鴨子的火雞。6測(cè)試結(jié)果火雞咯咯叫,且飛行距離短。鴨子呱呱叫,并能飛行。Quack()被調(diào)用時(shí),適配器咯咯叫;fly()被調(diào)用時(shí),適配器
6、飛行了5次。testDuck()方法根本不知道,這其實(shí)是一只假裝成鴨子的火雞。7適配器模式分析8客戶使用適配器過程①客戶通過目標(biāo)接口調(diào)用適配器的方法對(duì)適配器發(fā)出請(qǐng)求。②適配器使用被適配者接口把請(qǐng)求轉(zhuǎn)換成被適配者的一個(gè)或多個(gè)調(diào)用接口。③客戶收到調(diào)用結(jié)果,但并未察覺這一切是適配器在起轉(zhuǎn)換作用??蛻艉捅贿m配者是解耦的。9適配器模式定義類圖10對(duì)象和類適配器有兩種適配器:對(duì)象適配器和類適配器。前一頁是對(duì)象適配器類圖,類適配器類圖如下:對(duì)象適配器可適配某個(gè)類及其子類。但是,需要實(shí)現(xiàn)被適配者,多一個(gè)對(duì)象,效率低點(diǎn)。11家庭影院爆米花
7、機(jī)放大器調(diào)諧器12觀賞電影⑴打開爆米花機(jī)⑵開始爆米花⑶燈光調(diào)暗⑷放下屏幕⑸打開投影機(jī)⑹將投影機(jī)的輸入切換到DVD⑺將投影機(jī)切換到寬屏方式⑻打開功放⑼將功放輸入設(shè)置為DVD⑽將功放設(shè)置為環(huán)繞立體聲⑾將功放音量調(diào)到中(5)⑿打開DVD播放器⒀開始播放DVD看完還得一個(gè)個(gè)關(guān)掉!13開機(jī)任務(wù)寫成類和方法調(diào)用popper.on();popper.pop();lights.dim(10);//燈光調(diào)暗screen.down();//放下屏幕projector.on();projector.setInput(dvd);projecto
8、r.wideScreenMode();amp.on();amp.setDvd(dvd);amp.setSurroundSound();amp.setVolume(5);dvd.on();dvd.play(movie);打開爆米花機(jī),開始爆米花打開投影機(jī),設(shè)置為DVD和寬屏模式…打開功放,設(shè)置為DVD,調(diào)整成環(huán)繞立體聲