7适配器模式和外观模式.docx

上传人:b****6 文档编号:7296901 上传时间:2023-01-22 格式:DOCX 页数:16 大小:59.17KB
下载 相关 举报
7适配器模式和外观模式.docx_第1页
第1页 / 共16页
7适配器模式和外观模式.docx_第2页
第2页 / 共16页
7适配器模式和外观模式.docx_第3页
第3页 / 共16页
7适配器模式和外观模式.docx_第4页
第4页 / 共16页
7适配器模式和外观模式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

7适配器模式和外观模式.docx

《7适配器模式和外观模式.docx》由会员分享,可在线阅读,更多相关《7适配器模式和外观模式.docx(16页珍藏版)》请在冰豆网上搜索。

7适配器模式和外观模式.docx

7适配器模式和外观模式

适配器模式

类图:

代码:

#include

usingnamespacestd;

classDuck

{

public:

virtualvoidquack()=0;

virtualvoidfly()=0;

};

classMallardDuck:

publicDuck

{

public:

MallardDuck()

{

}

~MallardDuck()

{

}

voidquack()

{

cout<<"Quack"<

}

voidfly()

{

cout<<"I'mflying"<

}

};

classTurkey

{

public:

virtualvoidgobble()=0;

virtualvoidfly()=0;

};

classWildTurkey:

publicTurkey

{

public:

WildTurkey()

{

}

~WildTurkey()

{

}

voidgobble()

{

cout<<"Gobblegobble"<

}

voidfly()

{

cout<<"I'mflyingashortdistance"<

}

};

classTurkeyAdapter:

publicDuck

{

public:

Turkey*turkey;

TurkeyAdapter(Turkey*t)

{

turkey=t;

}

voidquack()

{

turkey->gobble();

}

voidfly()

{

for(inti=0;i<5;i++)

turkey->fly();

}

~TurkeyAdapter()

{

}

};

voidtestDuck(Duck*d)

{

d->quack();

d->fly();

}

intmain()

{

MallardDuck*duck=newMallardDuck();

WildTurkey*turkey=newWildTurkey();

Duck*turkeyAdapter=newTurkeyAdapter(turkey);

cout<<"TheTuekeysays..."<

turkey->gobble();

turkey->fly();

cout<<"TheDucksays..."<

testDuck(duck);

cout<<"TheTurkeyAdaptersays..."<

testDuck(turkeyAdapter);

}

外观模式

类图:

代码:

#include

usingnamespacestd;

classPopcornPopper

{

public:

PopcornPopper()

{

}

~PopcornPopper()

{

}

voidon()

{

cout<<"PopcornPopperon"<

}

voidoff()

{

cout<<"PopcornPopperoff"<

}

voidpop()

{

cout<<"PopcornPopperpoppingpopcorn!

"<

}

voidtoString()

{

cout<<"PopcornPopper"<

}

};

classTheaterLights

{

public:

TheaterLights()

{

}

~TheaterLights()

{

}

voidon()

{

cout<<"TheaterCeilingLightson"<

}

voidoff()

{

cout<<"TheaterCeilingLightsoff"<

}

voiddim()

{

cout<<"TheaterCeilingLightsdimmingto10%"<

}

voidtoString()

{

cout<<"TheaterCeilingLights"<

}

};

classScreen

{

public:

Screen()

{

}

~Screen()

{

}

voidup()

{

cout<<"TheaterScreengoingup"<

}

voiddown()

{

cout<<"TheaterScreengoingdown"<

}

voidtoString()

{

cout<<"TheaterScreen"<

}

};

classTurner

{

public:

//Amplifer*amplifer;

intam;

intfm;

intfrequency;

Turner()

{

}

~Turner()

{

}

voidon()

{

cout<<"Turneron"<

}

voidoff()

{

cout<<"Turneroff"<

}

voidsetAm(inta)

{

am=a;

}

voidsetFm(intf)

{

fm=f;

}

voidsetFrequency(intf)

{

frequency=f;

}

voidtoString()

{

cout<<"Turner"<

}

};

classCdPlayer

{

public:

//Amplifer*amplifer;

CdPlayer()

{

}

~CdPlayer()

{

}

voidon()

{

cout<<"Top-O-LineCdPlayeron"<

}

voidoff()

{

cout<<"Top-O-LineCdPlayeroff"<

}

voideject()

{

cout<<"Top-O-LineCdPlayereject"<

}

voidplay(stringmovie)

{

cout<<"Top-O-LineCdPlayerplaying\""<

}

voidpause(stringmovie)

{

cout<<"Top-O-LineCdPlayerpaused\""<

}

voidstop(stringmovie)

{

cout<<"Top-O-LineCdPlayerstopped\""<

}

};

classDvdPlayer

{

public:

//Amplifer*amplifer;

DvdPlayer()

{

}

~DvdPlayer()

{

}

voidon()

{

cout<<"Top-O-LineDvdPlayeron"<

}

voidoff()

{

cout<<"Top-O-LineDvdPlayeroff"<

}

voideject()

{

cout<<"Top-O-LineDvdPlayereject"<

}

voidplay(stringmovie)

{

cout<<"Top-O-LineDvdPlayerplaying\""<

}

voidpause(stringmovie)

{

cout<<"Top-O-LineDvdPlayerpaused\""<

}

voidsetSurroundAudio()

{

cout<<"Top-O-LineDvdPlayersettingsurroundAudio";

}

voidsetTwoChannelAudio()

{

cout<<"Top-O-LineDvdPlayersettingtwoChannelAudio";

}

voidstop(stringmovie)

{

cout<<"Top-O-LineDvdPlayerstopped\""<

}

};

classProjector

{

public:

//Amplifer*amplifer;

Projector()

{

}

~Projector()

{

}

voidon()

{

cout<<"Top-O-LineProjectoron"<

}

voidoff()

{

cout<<"Top-O-LineProjectoroff"<

}

voidtvMode()

{

cout<<"Top-O-LineProjectorintvmode"<

}

voidwideScreenMode()

{

cout<<"Top-O-LineProjectorinwideScreenmode(16x9aspectratio)"<

}

voidtoString()

{

cout<<"Top-O-LineProjector"<

}

};

classAmplifer

{

public:

Turner*turner;

DvdPlayer*dvdPlayer;

CdPlayer*cdPlayer;

Amplifer()

{

}

~Amplifer()

{

}

voidon()

{

cout<<"Top-O-LineAmpliferon"<

}

voidoff()

{

cout<<"Top-O-LineAmpliferoff"<

}

voidsetCd(CdPlayer*cd)

{

cdPlayer=cd;

}

voidsetDvd(DvdPlayer*dvd)

{

dvdPlayer=dvd;

cout<<"Top-O-LineAmpliersettingDVDplayertoTop-O-LineDVDPlayer"<

}

voidsetStereoSound()

{

cout<<"Top-O-LineAmplierstersosoundon(1speakers,1subwoofer)"<

}

voidsetSurroundSound()

{

cout<<"Top-O-LineAmpliersurroundsoundon(5speakers,1subwoofer)"<

}

voidsetTurner(Turner*t)

{

turner=t;

}

voidsetVolume()

{

cout<<"Top-O-LineAmpliersettingvolumeto5"<

}

voidtoString()

{

cout<<"Amplifer"<

}

};

classHomeTheaterFacade

{

public:

Amplifer*amp;

Turner*turner;

DvdPlayer*dvd;

CdPlayer*cd;

Projector*projector;

TheaterLights*lights;

Screen*screen;

PopcornPopper*popper;

HomeTheaterFacade(Amplifer*a,Turner*t,DvdPlayer*d,CdPlayer*c,Projector*p,TheaterLights*l,Screen*s,PopcornPopper*po)

{

amp=a;

turner=t;

dvd=d;

cd=c;

projector=p;

lights=l;

screen=s;

popper=po;

}

voidwatchMovie(stringmovie)

{

cout<<"Getreadytowatchamovie..."<

popper->on();

popper->pop();

lights->dim();

screen->down();

projector->on();

projector->wideScreenMode();

amp->on();

amp->setDvd(dvd);

amp->setSurroundSound();

amp->setVolume();

dvd->on();

dvd->play(movie);

}

voidendMovie(stringmovie)

{

cout<<"Shuttingmovietheaterdown..."<

popper->off();

lights->on();

screen->up();

projector->off();

amp->off();

dvd->stop(movie);

dvd->eject();

dvd->off();

}

};

intmain()

{

HomeTheaterFacade*homeTheater=newHomeTheaterFacade(newAmplifer(),newTurner(),newDvdPlayer(),newCdPlayer(),newProjector(),newTheaterLights(),newScreen(),newPopcornPopper());

homeTheater->watchMovie("RaidersoftheLostArk");

homeTheater->endMovie("RaidersoftheLostArk");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1