版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、標(biāo)準(zhǔn)文檔實(shí)驗(yàn)一單例模式的應(yīng)用1實(shí)驗(yàn)?zāi)康?)1)掌握單例模式(Singleton)Singleton)的特點(diǎn)2)2)分析具體問題,使用單例模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求很多應(yīng)用工程都有配置文件,這些配置文件里面定義一些應(yīng)用需要的參數(shù)數(shù)據(jù).AppConfigAppConfig-ParameterA-ParameterA: :string+GetParameterA()+SetParametestring+GetParameterA()+SetParameterA()rA()通??蛻舳耸褂眠@個類是通過nenew w 一個 AppConfiAppConfig g的實(shí)例來得到一個操作配置文件內(nèi)容的對象.
2、如果在系統(tǒng)運(yùn)行中,有很多地方都需要使用配置文件的內(nèi)容,系統(tǒng)中會同時存在多份配置文件的內(nèi)容,這會嚴(yán)重浪費(fèi)內(nèi)存資源.事實(shí)上,對于AppConfiAppConfig g類,在運(yùn)行期間,只需要一個對象實(shí)例就夠了.那么應(yīng)該怎么實(shí)現(xiàn)呢?用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該單例模式.繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖SingletonSingleton-instance:Singleton-SingletonO+Getinslance():Singleton4UML類圖實(shí)用文案標(biāo)準(zhǔn)文檔AppconfigAppconfig-parameterA:string-config:Appconfig-Appco
3、nfigQ+Getlnstance()+GetParameterAQ+SetParameterA()5代碼classAppConfig;privatestaticAppConfigconfig;privatestringparaneterA;privateAppConfig()publicstringParameterA(getreturnparameterA;)setparaneter=value;)publicstaticAppConfig;GetInstance0if(null=config)config=newAppConfig():)returnranfig;classProamst
4、aticvoidMain(stringargs)(,ppCanfiappconfig1=AppConfigGetInstance()appconfigl.ParameterA=FaraA;Console.WriteLine(appconfil:;匚jnsole,WritLine(appconfigl.ParaneterA):App1onfiappconfig2=AppConfif.GetInstance();Coiisole.WriteLine(appconfi2:Ciinsole.ItfriteLine(appconfig2.ParaneterA):Console+Read():實(shí)用文案標(biāo)準(zhǔn)
5、文檔6運(yùn)行結(jié)果,.印空/2/4.各和涕程;設(shè)計(jì).IT恒appconfigl:*ParaAappconfig2:ParaA實(shí)驗(yàn)二工廠模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握工廠模式FactoryFactory的特點(diǎn)2 2分析具體問題,使用工廠模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求有一個 OEMOEM 制造商代理做 HPHP 筆記本電腦LaptopLaptop, ,后來該制造商得到了更多的品牌筆記本電腦的訂單Acer,LenovoAcer,Lenovo, ,DellDell, ,該OEOEM M商發(fā)現(xiàn),如果一次同時做很多個牌子的本本,有些不利于治理.利用工廠模式改善設(shè)計(jì),用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該 OEMOE
6、M 制造商的工廠模式.繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖實(shí)用文案標(biāo)準(zhǔn)文檔4UML類圖5代碼classLaptopprotectedstringbrand;publicstringBrandgetreturnbrand;setbrand=value:classHPLaptop:LaptoppublicHPLaptop()this,brand=HP:classAccrLptcp;LaptoppublicAcerLaptop0this.brand二rtAcer*;classLenovoLaptop:LaptoppublicLenovoLaptop0this,brand.=Lenovo;實(shí)用
7、文案標(biāo)準(zhǔn)文檔classDellL-aptop:Laptop(publicDelLLaptop()thisbrand=D曰11;interfaceL.apTopFacturyLaptopCreateLaptop();)classHPLaptopFactory:LaptcpFactary(publicLaptopGreateLaptop()returnnewHfLa.ptop();1classAcerLaptopFactory:LaptopFactorypublicLaptopCreateLaptap()returnnewAcerLaptop();classLenovoLaptopFactory:
8、LaptopFactory(publicLaptopGreateLaptop()(returnnewLenovoLaptop();classD&1LLaptopFactary:LaptopFactory(publicLaptopGreateLaptop()(returnnewDellLaptop0:clssProffranistaticvoidMain(stringLaplopFactoryHP-factory=newHFLaptopFactory();LaptopFactoryAcerfactory=nevAcerLaptopFictory();LaptopFactcirLenovoTact
9、ory=ruevLenovoLaptapFactory();Ld.ptopFictoryDellfactory=ntwD&llLiptopFactory(),Cfiisuli?.WriteLine(HPfactory.CreateLaptop().Brand):Console.WriteLine(AcerfactDry.GreateLaptop().Brandi;Con二,114.WriteLine(Lenovofactory.CreateLaptop().Brand).Console.WriteLine(DellfactDry.GreateLaptop().Brand);Console.Re
10、ad();實(shí)用文案標(biāo)準(zhǔn)文檔6運(yùn)行結(jié)果實(shí)驗(yàn)三抽象工廠模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握抽象工廠模式AbstractFactoryAbstractFactory的特點(diǎn)2 2分析具體問題,使用抽象工廠模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求麥當(dāng)勞 McDonaldsMcDonalds 和肯德基 KFCKFC 快餐店都經(jīng)營漢堡 HamburgHamburg 和可樂 ColaCola , ,用 C#C#限制臺應(yīng)用程序?qū)崿F(xiàn)這兩個快餐店經(jīng)營產(chǎn)品的抽象工廠模式.繪制該模式的 UMUML L圖.3模式結(jié)構(gòu)圖實(shí)用文案標(biāo)準(zhǔn)文檔4UML類圖5代碼classHamburg(privateintid.:privatedoublepri
11、ce.publicintId(getreturnid;setid=vlue;)publicdoublePrice(getireturnprice;setprice=value:!1interfaceIHamburgHamburgGetHaniburg(intid);widUpdat&HamburgFxice(intid);classMcIonaldsHajuburg:IHajnbur?(publicHajntur?GetHamburg(intid)Console,WriteLirie執(zhí)McDor131d自買了一個亶):retumnull;publicvoidUpdateHamburgPrice
12、Cintid)IConsole.Writ乩ine(McD.仇式dm快鞋店的Hamburg降價(jià)大甩賣了);實(shí)用文案McDcnIdlMcDcnIdl-HCreateHambugO:JHamburg+Cre*teColaO-ICola標(biāo)準(zhǔn)文檔classKFCHamburg:IHanburgllinburgGetKamburg(intid)Console,lriteLinsC從KFC買T個Hamburg)returnnull;FT歸口】3WriteLineCKFC快餐店的Hamburg降價(jià)大甩賣了“);classCola(privateintid;privatedoubleprice;publicin
13、tId|getreturnid;setxd=value;publicdoublePrice(getreturnprice;setprice=value;interfaceICola(ColaGetColafintid);voidUpdateColaPrice(irctid);classMcL1znaldCola:ICola(publicColaGetCola(intid?Cinsole,WriteLine(,fMMcDcinwldx買了一個Ceila):returnnull;publicvoid(JpdateColaPrice(intid)Console.WriteLine(McDonal的快
14、饕店的C.】將降價(jià)大甩賣了Q;classKFCCola:IColapublic.口laGetCola(intid)Console.WriteLine廣從KFC買了一個Cdla):returnnull;publicvoidUpdateColaPricetintid)匚mmole,邛匚設(shè)丸逅呂KFC快雪店的CuLa降價(jià)大甩賣了D;實(shí)用文案ci-i-1-1-c-11 1u ub bp標(biāo)準(zhǔn)文檔快鱉店interfaceNoshery(IHjjnljLirgCreateHamburg():IColaCreateCcla();)classMcDonalds:NosherypublicIHajnburgCre
15、ateHanburgreturnnewNIcDonaldsHamburg0;publicIColaCreartzeColaOreturnnewMcDonaldsC01a():)classEFC:NosherypublicIHamburgCreateHamburg0returnnewErCHimburg():publicIColaCieateColaO(returnnewKFCColat);classPru&rmstaticvoidMain(stringargf)(Noaherynoshery=nevKFC();IHburgih=noshery.GreateHamburg();ih.GetHaj
16、uburg(1);ih.UpdateHamburgPricc(1);IColaic=noshery.CreateCola();ic.GetCola(l);icUpdateColaPrice(1);ConsoleiRead():6運(yùn)行結(jié)果利出各種課程/設(shè)計(jì)模式/設(shè)計(jì)回1從KFCKFC買了一個HdmhupgHdmhupg如C C快餐店的lUmkmlUmkm窿價(jià)大甩賣了df 實(shí)用文案標(biāo)準(zhǔn)文檔實(shí)驗(yàn)四建造者模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握建造者模式BuilderBuilder的特點(diǎn)2 2分析具體問題,使用建造者模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求建造者模式是一種創(chuàng)立型模式,它主要是應(yīng)對工程中一些復(fù)雜對象的創(chuàng)立工
17、作.所謂“復(fù)雜對象,是指此對象中還含有其它的子對象.我們現(xiàn)在定義一個場景:汽車生產(chǎn)必須包含車輪WheelWheel、油箱OilBoxOilBox和車身BodyBody, ,應(yīng)用建造者模式,用C#C#限制臺應(yīng)用程序?qū)崿F(xiàn)該設(shè)計(jì),構(gòu)建 BMBMW W 品牌和 BenBenZ Z 品牌汽車生產(chǎn).繪制該模式的 UMUML L圖.3模式結(jié)構(gòu)圖4UML類圖實(shí)用文案標(biāo)準(zhǔn)文檔5代碼classComponentprotectedstringname:publicstringName(get(returnnane;setname=value;classWheel:Component(publicWheel()thi
18、s,name=Vh&el:classOILIECIK:Comporient1publicOilBox()、.this,najae=OilBox;classCarBody:Cnmpori白rrt(publicCarBody()(this,nane=CarBcidy:classCarprivateIListparts=newList();publicvoidAdd(Componentciomponent)(parts*Add(component);publicvoidShow0foreach(Componentcomponentinparts)Corinelc.WriteLine(componen
19、t.Name):abstractclassCarBulldeipublicpublicpublicpublic實(shí)用文案ttttccccccccaaaarrrrtttt昌3ISSababab.ab.abababab標(biāo)準(zhǔn)文檔classBOBuilder:CarEuilderprivateCarcar=newCar();publicovierridevaidBuildWheel()car.Add(newVheelO);publicoverridevoidEuildOxlBox()(car.AddfneurJilBox();)publicoverridevoidBuildCarBodyOcar.Add
20、(neiCarBodyO);icoverrideCarGetCar()returncar;clasBenZBuilder:CarEuilderprivateCarcar=newCar;publicoverridevoidEuildWheel()(car.Add(newTheel0);publicoverride(car.Add(newpublicoverridecar.Add(newpublicoverridereturncar;classCarDirector(publicvoidBuildCar(Carbuilderch)(cb-BuildWheel():cb,BuildOilBosO;c
21、b,BuildCarBody();實(shí)用文案標(biāo)準(zhǔn)文檔1-1-ubub p p voidEuildOilBnx()OilEoxO):voidBuildCarBody()CarEody():CarGetCar()classProgram(staticvoidMain(stringargs)(CarDirectordirector=nevCarDirector();CarBuildercbl=nevSMWBuilder();CarBuildercb2=newBenZBuilder():Console.WriteLineCBuildEMtf);director.EuildCar(cbl);Carcarl
22、=cbl.GetCar():car1.Show.;ConsoleiWriteLmeBuildEenZ);director.EuildCar(cb2);Carcar2=cb2.GetCar();car2.名how.:Console.ReadO;6運(yùn)行結(jié)果川-“開泗一各0i回BuildBMUBuildBMU* *WheelWheelJ JOilBoxCarBodyBuildBenZUheelpilBoxCarBodOilBoxCarBodyBuildBenZUheelpilBoxCarBod實(shí)驗(yàn)五適配器模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握適配器模式Adapter-Adapter-的特點(diǎn)2 2分析具體問題
23、,使用適配器模式進(jìn)行設(shè)計(jì)2實(shí)驗(yàn)內(nèi)容和要求一個軟件團(tuán)隊(duì)開發(fā)繪圖系統(tǒng),設(shè)計(jì)了圓對象CircleCircle、矩形對象RectangleRectangle, ,線對象LineLine都支持 DrawDraw函數(shù),即可以通過 DrawDraw函數(shù)繪制圖形.為了加快項(xiàng)實(shí)用文案標(biāo)準(zhǔn)文檔目進(jìn)度,將角度對象(Angle)(Angle)繪制功能交給了合作團(tuán)隊(duì)實(shí)現(xiàn).但合作團(tuán)隊(duì)將角度對象繪制函數(shù)定為了 DrawAngle()DrawAngle().繪圖系統(tǒng)提供應(yīng)用戶后,用戶不滿意,希望能統(tǒng)一的調(diào)用,不用記太多命令.應(yīng)用適配器模式,用 C#C#限制臺應(yīng)用程序完善該設(shè)計(jì).繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖4U
24、ML類圖5代碼abstractclassGraphicspublicabstractvoidDraw.;cl&ssCircle:GraphicspublicoverridevoidDraw()Console.WriteLijie(*iH7+0?:實(shí)用文案標(biāo)準(zhǔn)文檔classRectangle:Graphics(publicoverridevoidDravO(Console.Writ九如“畫了一個箱形D;)classLine:GraphicspublicoverridevoidDraw()(ConsoleVriteLine因了一條直線);)1classArigle(publicvoidDrawAn
25、gle()Ctmxole.WriteLine畫了一個直角“);)classAdapter:Graphics(privat&Angle=nevAngle();publicoverridevoidDrav()(angle.DrawAngle();)classProgramtstaticvoidMain(stringargs)Graphicscircle=newCircle();circle.DrawO;Graphicsrect=newRectangle-();rectDraw():Graphicsline=newLine(?;line.Draw();Graphicsadapter=nevAdapt
26、er();adapterDraw();Ccnsol?.ReadC);)6運(yùn)行結(jié)果玉le/“E74各種課程/設(shè)計(jì)I.I回實(shí)用文案鰲角聶宜宜-IXJT畫畫畫IffllIffll一實(shí)驗(yàn)六橋接模式的應(yīng)用1實(shí)驗(yàn)?zāi)康?)1)掌握橋接模式(Bridge)Bridge)的特點(diǎn)2)2)分析具體問題,使用橋接模式進(jìn)行設(shè)計(jì)2實(shí)驗(yàn)內(nèi)容和要求一個咖啡店可以提供大杯(JorumCoffee)(JorumCoffee)、中杯(MediumCoffee)(MediumCoffee)、小杯(SmallCoffee)(SmallCoffee)的咖啡(Coffee)(Coffee), ,為了滿足不同用戶的口味,在咖啡中可以添加牛奶
27、(Milk)(Milk), ,或者糖(Sugar),(Sugar),或者檸檬(Lemon),(Lemon),提供應(yīng)用戶不同口味的組合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加檸檬,小杯咖啡加糖等.應(yīng)用橋接模式,用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該設(shè)計(jì).繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖-OperaiionImp()4UML類圖標(biāo)準(zhǔn)文檔RefinedAbstraclionConcretelmpleioentorAConcreteImplementorB+Operation0Abstraction仝5代碼實(shí)用文案標(biāo)準(zhǔn)文檔調(diào)味品類abstractclassCondimentpublicabs
28、tractvoidShow():classSufer:CondimentpublicoverridevoidShow()Console,IriteLineC糖);classMilk;CondimentflpublicoverridevoidShow.ConsoleIFriteLinmC牛妍):classLemon:Condiment(publicoverridevoidShow0(LonsoleiWiteLine(T);1abstractclassCoffeeprotectedZendimentcondiment;publicvoidAddCondiment(Condimentcondijne
29、nt)this,condimeiYt=condiment;publicabstractvoidShowt);)小杯咖啡classSmallCoffee:CoffeepublicoverridevoidShowO(Console.Writer小杯咖啡流加了“);condiment,Show();)1中杯咖1啡classMediuuikCoffee:CoffeepublicovertrdjevoidShoiOConsole,Write(中杯咖啡添加了“);condimerrt.Show();實(shí)用文案標(biāo)準(zhǔn)文檔“大杯咖啡classJorumCaffee:Coffeepublicoverridevoid
30、Show()(ConsQ-rit日(大杯咖啡添加了);condiment.ShowO;classPrcgram(staticvoidMainString口args)(Coffeecoffee=newSmallCoffee();coffee.AddCondiment(newSuger:coffee.Shov();coffeeAddCondiment(neifMilk();coffee.Shov();coffeeAddCoridment(newLejuon():coffee.ShovO;Coii5olcRead():)6運(yùn)行結(jié)果各科課程/沒計(jì)模式/設(shè)=目一實(shí)驗(yàn)七裝飾模式的應(yīng)用1實(shí)驗(yàn)?zāi)康?)1)掌握
31、裝飾模式(Decorator)Decorator)的特點(diǎn)2)2)分析具體問題,使用裝飾模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求喜羊羊逃命游戲:喜羊羊被灰太狼追,喜羊羊最多 5 5 條命,灰太狼每咬到實(shí)用文案標(biāo)準(zhǔn)文檔喜羊羊一次,喜羊羊就要少一條命.在逃的過程中喜羊羊可以吃到三種蘋果,吃紅蘋D-QD環(huán)環(huán)環(huán)糖牛檸TrJT口口口力力力舔舔舔果可以給喜羊羊加上保護(hù)罩,吃綠蘋果可以加快喜羊羊奔跑速度,吃黃蘋果可以使喜羊羊趟著水跑.應(yīng)用裝飾模式,用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該設(shè)計(jì).繪制該模式的UMLUML 圖.提示:這個例子如果用類的繼承來實(shí)現(xiàn)的話那可就麻煩了,你需要為喜羊羊派生3*2*1=63*2*1=6 個子類
32、有保護(hù)罩的喜羊羊,奔跑速度加快的喜羊羊,會趟水的喜羊羊,既有保護(hù)罩又會趟水的喜羊羊,奔跑速度快且會趟水的喜羊羊,有保護(hù)罩且奔跑速度快的喜羊羊,有保護(hù)罩、奔跑速度快且會趟水的喜羊羊,如果使用裝飾模式的那就不用派生諸多子類了,當(dāng)喜羊羊每吃到一個蘋果,我們就用裝飾模式給喜羊羊加一個動態(tài)增加一個新功能即可.3模式結(jié)構(gòu)圖實(shí)用文案標(biāo)準(zhǔn)文檔5代碼classPieasantGoatprivatesi:rinname;publicPlea5mtGoat()publicPleasantGoat(stringname)this*name-name:publicvirtualvoidShow0ConsoleiWrit
33、eLineC0name):classAppletPleasantGoatprotectedFloasairtGoatcojuponent;IpublicvoidAddSkill(Pleasant1oatcomponent)this,component=cojuponent;)publicoverridevoidShov0(iftcomponent=null)compnnBntiShovC);clasKedApple:Apple(publicoverridevoidShow.匚口n三cd甘Wri七曰有保護(hù)霞的);base.Show.;classGreenApple:Applepublicover
34、ridevoidShow()(CcmmolAMtKs奔葩速度加快的;base.Show.;實(shí)用文案標(biāo)準(zhǔn)文檔classYellowApple:Apple(publicoverridevoidShowO(口口1歸口1,Write會趟水的*):baseShowO;classPrograjn(staticvoidKain(stringargs)(PleararitGoitgoat=newPl號由marrtGoat(*直羊羊);CSIM口iB.WriteLine(獲得技能的第一種情況:);FiedAppleredl二newEedApple():GreenApplegreenl=newGreenApple
35、();redl.AddSkill(goat):gieenl.AddSkill(redl);green1.Show:Cgsol*WriteLine獲蹲技能的第二種情況:);GreenApplegreen2=newGrenApple():YellurAppleyellow2=newYellovApple():green2.AddSkill(goat);yellow2.AddSkill(green2);yellow2.Show();Console,Read();)6運(yùn)行結(jié)果川隹:/4.各種課程原計(jì)慢式/設(shè)計(jì)口回菱得技能的第 T 中情況奔跑速度加快的有履護(hù)罩的喜羊羊?qū)嵱梦陌?T%Tnrnr- -frr
36、frr某m ms標(biāo)準(zhǔn)文檔實(shí)驗(yàn)八外觀模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握外觀模式FacadeFacade 的特點(diǎn)2 2分析具體問題,使用外觀模式進(jìn)行設(shè)計(jì)2實(shí)驗(yàn)內(nèi)容和要求一個保安系統(tǒng)的,由錄像機(jī)、電燈、紅外線監(jiān)控和警報(bào)器組成.保安系統(tǒng)的操作人員需要經(jīng)常將這些儀器啟動和關(guān)閉.保安類需要用到所有的錄像機(jī)CameraCamera、電燈LightLight、感應(yīng)器SensoSenso 濟(jì)口警報(bào)器AlarmAlarm對象,保安覺得使用不方便.應(yīng)用外觀模式,用 C#C#限制臺應(yīng)用程序改良該設(shè)計(jì).繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖4UML類圖實(shí)用文案標(biāo)準(zhǔn)文檔5代碼abstractclassDevicepro
37、tectedstringnane:publicDevice()publicDevice(stringn.舊)this,name-nan日:publicabstractvoidTurnDn():publicabstractvoidTurnOff();classCaibera:Device(publicCaneraO:baseCCaniera)publicoverrideoidTurnOn()iConsole.VriteLine(IT7+name);)publicoverridevoidTurnOff()(Console.VriteLineItl7+name):classLight:Devicep
38、ublicLight():base(Lijhtn)(publicavemdevoidTurrtOnt)(Console.WriteLirueCfl-+name);publicoverridevoidTurnOff()(匚加裳6工日.,工江江111尊(美閔了+name);classSenser:DevicepublicSensor():base(Sensor)publicoverridevoidTurnOn0ConsLE.WriteLiriE(翻開T+name);publicoverridevoidTurnOff()匚口iim口工e.WritELiiiE(關(guān)閉了+najue);)實(shí)用文案標(biāo)準(zhǔn)文檔
39、classAlarm:DevicepublicAlarm():base(Alarm)()publicoverridevoidTurnOrxC)匚匚ti三CIIE.Mritdnc翻開了+name;)publicoverridevoidTurnOff()(CsriMlkWritELin*(美if了+name).)classSecurityFacadeprivatestaticSecurityFacadesecurity;privateIListdevices;privateSecutityFacade()publicstaticSecurityFicadeGetInstance()!if(nul1
40、security)(secnrity=new5ecurityFacade(:IListdevices=newList().devices.Add(cajnera);devices4AddClight);devices.Add(sensor);devices.Add(alarm);security.Devices=devices;)returnsecurity;publieIListDevicessetdevices=value;publicvoidActivate()foreach(varitemindevicss)|item.TurnOnG;)publicvoidDeactivatft()f
41、oreach(varitemindevices)(item.TurnOff():實(shí)用文案Canteracamera.neirCamera0;Lightlight=SensorsensorAlitjnAlarm=newLightO:=newSensor();newAlariftO:標(biāo)準(zhǔn)文檔classProgramstaticvoidMain(stringargs)(ScurityFacadesecurity=SecurityFacade.GetInstance();Console.WriteLine(*啟動保安系統(tǒng)*):security.Activate(J;Console.riteLine關(guān)閉
42、保安系統(tǒng));security.Deactivate0:Console.ReadO;6運(yùn)行結(jié)果刊名種悌程/設(shè)計(jì)模武.口國啟動保安.系葩LisrhtLisrhtJSensopJSensop A Alarmlarm關(guān)而保安系統(tǒng)J JCaRevaCaRevaLightLightSensorSensor/ /AlaAla實(shí)驗(yàn)九觀察者模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握觀察者模式ObserveObserve.的特點(diǎn)2 2分析具體問題,使用觀察者模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求網(wǎng)上商店中如果商品product:product:在名稱namename、價(jià)格priceprice等方面有變化,系統(tǒng)能自動通知會員,將是網(wǎng)上
43、商店區(qū)別傳統(tǒng)商店的一大特色.如何設(shè)計(jì)實(shí)現(xiàn)?說明你所選擇的設(shè)計(jì)模式,畫出類關(guān)系圖并指明各個類的角色.應(yīng)用觀察者模式,用 C#C#限制臺應(yīng)用程序改良該設(shè)計(jì).繪制該模式的 UMLUML 圖.EEJEE3模式結(jié)構(gòu)圖實(shí)用文案標(biāo)準(zhǔn)文檔5代碼classProduct(publicconststringCHANGED_NAME=商品名稱變動,;publicconststringCHANGED一PRICE=商品價(jià)格變動;privatestringname:privatefloatprice:privateIListobservers=newList();publicProduct()(publicProduct
44、(stringnam%floatprice)|(this,name=nans:this,price=price;publicstringGetNajae()returnnaoie;publicvoidSetName(stringname)(this*name=name;this.Notify(CHANGED.N.OE).)實(shí)用文案標(biāo)準(zhǔn)文檔publicfloatGetPriceC)returnprice;publicvoidSetPrice(floatprice)this,price=price;this.Notify(CHAJIGED_PRICE);publicvoidAddObserverC
45、PreductObserverobserver)(observers.Add(observer);)publicvoidDeleteObserver(FroductObserverobserver)(observers.Remave(observer):)publicvoidNotify(stringtype)foreach(ProductOb?rverobserverinobservers)observer.Update(thiSjtype);)abstrartclassProductObserverabstrajd:publicvoidUpdate(Productprodiactjstri
46、ngtype):)classProductNameObserver1:Productobserver(publicoverridevoidUpdate(ProductproductPstringtype)iifttype-Pmduct.CHANGED_MAME)Conscde.WriteLiveC商品的名稱變?yōu)椋篎pmduct.GetHans0);)classProductPriceObserver:ProductObserverpublicoverridevoidUpdate(Productproductstringtype)if(type=Product.CHANGEDPRICE)1Cen
47、口1c.WriteLL商品的價(jià)格變?yōu)椋?product.GetPrice();實(shí)用文案標(biāo)準(zhǔn)文檔classProgram(stat:icvoidMain(stringargs)Productproduct=nevProduct(可口可樂,4.6f);ProductObserverobserver1=newPreductNajaeObserver();ProductObserverobserver2=newProductPriceObserver();product.AddObserver(observer1):product.AddObserver(observer2):Console.Writ
48、eLineC改動前Cm賓laWriteLin甘商品名稱:oduct.GetM珈e.;皿301后,WritcLiiiB廠商品價(jià)格:+product.GetPrice();Console.WriteLine改動后一product.SetNane(百事可樂);product.SetPrice(5.Of);Console.Read:運(yùn)行結(jié)果 R3:/E:/4.各和課程;設(shè)計(jì)噴式,設(shè)三工-二戌動前-品箱稱:可口可樂商口口橋格;4-54-5一一改動后一一一實(shí)驗(yàn)十策略模式的應(yīng)用1實(shí)驗(yàn)?zāi)康? 1掌握策略模式StrategyStrategy 的特點(diǎn)2 2分析具體問題,使用策略模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求在圖書
49、銷售時,根據(jù)不同類型的圖書有不同的折扣,計(jì)算金額時必須區(qū)別對待,例如計(jì)算機(jī)類圖書 7 7 折,英語類圖書 6 6 折.應(yīng)用策略模式,用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該設(shè)計(jì).繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖R R變?yōu)椋喊偈驴蓸纷優(yōu)椤? 5實(shí)用文案標(biāo)準(zhǔn)文檔4UML類圖5代碼abstractclassCashSuper(publicabsttactdoubleacceptCash(doublemoney):classCahNormal:CashSuperpublicoverridedoubleacceptCash(doublemoney)returnmoney;classCashRabat
50、e:CashSuper(privatedoubleJuoneyRebate=Id:publicCashRebate(doublejnoneyRebate)(this.iiioneyRebate=moneyEebate;實(shí)用文案標(biāo)準(zhǔn)文檔publicoverridedoubleacceptCash(doublemoney)returnnoneyRebate*roney;classCashContextCishLup&rcs=null:publicCashContext(stringbook)switch(book)(case計(jì)算機(jī)書cs=newCashRebate(0,7);break:case英
51、語書;cs=nevCashKel:電t己(Q.6);break:)publicdoubleGetResult(doublemoney)returncs.acceptCashtmoney):)classProgramstaticvoidHain(striiagargs)doubleJiwney=lOOd;CshContextccl=ne*CashCwtMt(英語書);Consol.WritsLinriW元的英諳書打折后的價(jià)格為;*ccl*GMRe帛ult(monsy)+r元):CarhCocitextcc2=newCaghiCarrtcKt?計(jì)算機(jī)書);Console.蛭t看Line(1.0元的
52、計(jì)算機(jī)書打折后的價(jià)格為:+cc2.GetRasult(naney)+元);Console.Readt):6運(yùn)行結(jié)果二Hk:/E:/4各粕涕程/設(shè)廿度式/設(shè)計(jì)?;?|、向無電南f f航而岳的偵檢為丁6 6阮_1 1時元的計(jì)算機(jī)助丁折靜的根榕為1 1網(wǎng)元*1用-+實(shí)用文案實(shí)驗(yàn)十一責(zé)任鏈模式的應(yīng)用1實(shí)驗(yàn)?zāi)康?)1)掌握責(zé)任鏈模式(ChainofResponsibility)ChainofResponsibility)的特點(diǎn)2)2)分析具體問題,使用責(zé)任鏈模式進(jìn)行設(shè)計(jì).2實(shí)驗(yàn)內(nèi)容和要求高校學(xué)生請假需要符合學(xué)校規(guī)定,假設(shè)班主任可以批準(zhǔn) 1 1 天假,系主任可以批準(zhǔn) 7 7天假,各學(xué)院院長可以批準(zhǔn) 303
53、0 天,學(xué)校校長可以批準(zhǔn) 1 1 年.應(yīng)用責(zé)任鏈模式,用 C#C#空制臺應(yīng)用程序?qū)崿F(xiàn)該設(shè)計(jì).繪制該模式的 UMLUML 圖.3模式結(jié)構(gòu)圖+Hrindl0標(biāo)準(zhǔn)文檔ConcreteHajidlerAConerateHand1*?rB-ILilldll()4UML類圖實(shí)用文案ssname:stringssname:string標(biāo)準(zhǔn)文檔5代碼classRequestprivatestringtype:privatestringcontent:privateintnumber;publicftringType(getreturntype;settype=value;publicstringConent(
54、getreturncontent:setcantent=value;publicxntNimber(getreturnnumber:setfnumber=value;abstractclassManager(protectedstringname;protectedJfl-inag:ersuperior;publicManager(stringname)this,name二name;publicvoidsetSuperior(sna5&rsuperior)this.superior=superior:abstractpublicvoidHandleKequest(Reaue5trequest)
55、:“班主任 classHeadTeacher:ManagerpublicHeadTeacher(stringname):base(name)publicoverridevoidHandleRequest(Requestrequest)(if(request.Type=請假&request.Number=1)(Console.WriteLineC0:12name,request.Contentjrequest.Number);實(shí)用文案標(biāo)準(zhǔn)文檔elseif(superior!=null)|superiorHandleRequest(request);)“系主任classDepartmentDire
56、ctor:ManagerpublicDepartniftntDirector(stringnaikt):base(name)publicoverridevoidHandleRequest(Reque*request)(if(request.Type=i 百期&request+Pumber=7)二口!.&MritLine(:12天產(chǎn)訛準(zhǔn),name,request.Content.Heif(superior!=null)superiorrHandleRequest(request);)“除長claffDean:ManagerpublicDean(stringname):base(name)publ
57、icoverridevoidHandleRequest(?.e-questrequest)1if(requestType=請頷*&request.Number=31)tcinmcde*WritMine(0);【112天械批:隹,nane*request*Centeat,)elseif(superior!=null)(superior.HandleRsquet(request);1ij“校長classHeaaster!MaiiagecpublicHeadMast#r(stringname):base(name)publiccverndevoidHandleRequest(?quetrequest)if(request.Type=i 百懼requesttNumber=366)Csfolg,-t 乩n 廿口卜12天被批準(zhǔn)fnaikfljrequest.Content,實(shí)用文案標(biāo)準(zhǔn)文檔elseif(superior!=null)(superior.HandleRequest(request);)classProgrijnstaticvoidHain(stringa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木材運(yùn)輸碳排放交易合作合同4篇
- 2025年度個人藝術(shù)品投資收藏合同4篇
- 吉林省長春市凈月實(shí)驗(yàn)中學(xué)2024-2025學(xué)年九年級上學(xué)期期末化學(xué)試題(含答案)
- 園區(qū)物業(yè)服務(wù)質(zhì)量提升考核試卷
- 2025版微信公眾號內(nèi)容版權(quán)授權(quán)與運(yùn)營維護(hù)服務(wù)合同3篇
- 原材料卸車作業(yè)中安全生產(chǎn)獎勵制度合同3篇
- 2025年代理經(jīng)銷銷售合同
- 2025年農(nóng)產(chǎn)品合同模板
- 2025年合資合約示范
- 二零二五年度貴州事業(yè)單位合同制工人聘用協(xié)議3篇
- 2025水利云播五大員考試題庫(含答案)
- 中藥飲片驗(yàn)收培訓(xùn)
- 手術(shù)室??谱o(hù)士工作總結(jié)匯報(bào)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機(jī)械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 創(chuàng)傷處理理論知識考核試題及答案
- 2019級水電站動力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 抖音認(rèn)證承諾函
- 高等數(shù)學(xué)(第二版)
- 四合一體系基礎(chǔ)知識培訓(xùn)課件
- ICD-9-CM-3手術(shù)與操作國家臨床版亞目表
評論
0/150
提交評論