版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、徐海蛟博士實驗一工廠模式的應用【實驗目的】1)掌握工廠模式(Factory)的特點2)分析具體問題,使用工廠模式進行設計。【實驗內(nèi)容和要求】有一個 OEM制造商代理做 HP筆記本電腦(Laptop),后來該制造商得到了更多的品牌筆記本電腦的訂單 Acer、Lenovo、Dell,該 OEM商發(fā)現(xiàn),如果一次同時做很多個牌子的本本,有些不利于管理。利用工廠模式改善設計,用控制臺應用程序?qū)崿F(xiàn)該 OEM制造商的工廠模式。該模式的 UML圖如下。【模式UML圖】【模式代碼(JAVA語言實現(xiàn))】publicclass FactoryMethod / 主類publicstaticvoid main(Stri
2、ng args) Computer c; Factory f = new DellFactory(); c = f.getComputerType(); c.ComputerType(); f = new LenovoFactory(); 1代碼重構(gòu)與設計模式課堂實驗徐海蛟博士c = f.getComputerType(); c.ComputerType(); f = new AcerFactory(); c = f.getComputerType(); c.ComputerType(); interface Factory Computer getComputerType(); class
3、DellFactoryimplements Factory Overridepublic Computer getComputerType() returnnew Dell(); classAcerFactory implements Factory Overridepublic Computer getComputerType() returnnew Acer(); class LenovoFactory implements Factory Overridepublic Computer getComputerType() returnnew Lenovo(); /* * 電腦品牌 */i
4、nterface Computer publicvoid ComputerType(); class Dell implements Computer Overridepublicvoid ComputerType() / TODO Autogenerated method stub2代碼重構(gòu)與設計模式課堂實驗徐海蛟博士System.out.println("Dell Computer"); class Acer implements Computer Overridepublicvoid ComputerType() System.out.println("Ac
5、er Computer"); class Lenovo implements Computer Overridepublicvoid ComputerType() / TODOAutogenerated method stubSystem.out.println("Lenovo Computer"); 【運行截圖】【實驗小結(jié)】通過本次實驗,學會了使用工廠方法模式。工廠方法模式的適用性如下:當一個類不知道它所必須創(chuàng)建的對象的類時。當一個類希望由它的子類來指定它所創(chuàng)建的對象時。當類將創(chuàng)建對象的職責委托給多個幫助子類中的某一個,并且希望將哪一個幫助子類是代理這一信息局部
6、化時。3代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗二抽象工廠模式的應用【實驗目的】1)掌握抽象工廠模式(Abstract Factory)的特點2)分析具體問題,使用抽象工廠模式進行設計。【實驗內(nèi)容和要求】麥當勞(McDonalds)和肯德基(KFC)快餐店都經(jīng)營漢堡(Hamburg)和可樂(Cola),用 JAVA控制臺應用程序?qū)崿F(xiàn)這兩個快餐店經(jīng)營產(chǎn)品的抽象工廠模式。該模式的 UML圖如下?!灸J?UML 圖】【模式代碼】publicclass AbstractFactoryTest publicstaticvoid main(String args) Hamburg h; Cola c; A
7、bstractFactory af = new MDNFactory(); 4代碼重構(gòu)與設計模式課堂實驗徐海蛟博士h = af.createHamburg(); c = af.createCola(); h.getHumburg(); c.getCola(); af = new KDJFactory(); h = af.createHamburg(); c = af.createCola(); h.getHumburg(); c.getCola(); interface AbstractFactory Hamburg createHamburg(); Cola createCola(); cl
8、ass MDNFactory implements AbstractFactory Overridepublic Hamburg createHamburg() returnnew MDNHamburg(); Overridepublic Cola createCola() returnnew MDNCola(); class KDJFactory implements AbstractFactory Overridepublic Hamburg createHamburg() returnnew KDJHamburg(); Overridepublic Cola createCola() r
9、eturnnew KDJCola(); /* * kDJ & */interface Hamburg 5代碼重構(gòu)與設計模式課堂實驗徐海蛟博士void getHumburg(); class MDNHamburg implements Hamburg Overridepublicvoid getHumburg() System.out.println("MDNHamburg"); class KDJHamburg implements Hamburg Overridepublicvoid getHumburg() / TODO Autogenerated method
10、 stubSystem.out.println("KDJHamburg"); interface Cola void getCola(); class MDNCola implements Cola Overridepublicvoid getCola() System.out.println("MDNCola"); class KDJCola implements Cola Overridepublicvoid getCola() System.out.println("KDJCola"); 【運行截圖】6代碼重構(gòu)與設計模式課堂實驗
11、徐海蛟博士【實驗小結(jié)】抽象工廠模式主要適用于以下情況:一系列要獨立于它的產(chǎn)品的創(chuàng)建、組合和表示時。、一個系統(tǒng)要由多個產(chǎn)品系列中的一個來配置時。當要強調(diào)一系列相關的產(chǎn)品對象的設計以便進行聯(lián)合使用時。當要提供一個產(chǎn)品類庫,而只要顯示它們的接口而不是實現(xiàn)時。7代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗三適配器模式的應用【實驗目的】1)掌握適配器模式(Adapter)的特點2)分析具體問題,使用適配器模式進行設計。【實驗內(nèi)容和要求】一個軟件團隊開發(fā)繪圖系統(tǒng),設計了圓對象(Circle)、矩形對象(Rectangle),線對象(Line)都支持 Draw()函數(shù),即可以通過 Draw()函數(shù)繪制圖形。為了
12、加快項目進度,將角度對象(Angle)繪制功能交給了合作團隊實現(xiàn)。但合作團隊將角度對象繪制函數(shù)定為了 DrawAngle()。繪圖系統(tǒng)提供給用戶后,用戶不滿意,希望能統(tǒng)一的調(diào)用,不用記太多命令。應用適配器模式,用 JAVA控制臺應用程序完善該設計。該模式的 UML圖如下?!灸J経ML圖】【模式代碼】publicclass AdapterTest publicstaticvoid main(String args) Paint a = new AngleAdapter(); a.draw(); 8代碼重構(gòu)與設計模式課堂實驗interface Paint 徐海蛟博士void draw(); cla
13、ss Circle implements Paint Overridepublicvoid draw() System.out.println("圓圓"); classRectangle implements Paint Overridepublicvoid draw() System.out.println("方方"); class Line implements Paint Overridepublicvoid draw() System.out.println("線線"); class Angle publicvoid Draw
14、Angle() System.out.println("角度"); class AngleAdapter implements Paint private Angle a=new Angle(); Overridepublicvoid draw() / TODO Autogenerated method stuba.DrawAngle(); 【運行截圖】9代碼重構(gòu)與設計模式課堂實驗徐海蛟博士【實驗小結(jié)】適配器模式主要適用于以下情況:當想要使用一個已經(jīng)存在的類,但是該類的接口不符合現(xiàn)有的需求時。當需要創(chuàng)建一個可以被復用的類,該類能夠與其他無關的類甚至無法預見的類協(xié)同工作時。當
15、需要使用一個已經(jīng)存在的子類,但是不可能對所有的都進行子類化以匹配他們的接口時,對象適配器可以對其父類接口進行適配。10代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗四橋接模式的應用【實驗目的】1)掌握橋接模式(Bridge)的特點2)分析具體問題,使用橋接模式進行設計?!緦嶒瀮?nèi)容和要求】一個咖啡店可以提供大杯 (JorumCoffee)、中杯 (MediumCoffee)、小杯(SmallCoffee)的咖啡(Coffee),為了滿足不同用戶的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),或者檸檬(Lemon),提供給用戶不同口味的組合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加檸檬
16、,小杯咖啡加糖等。應用橋接模式,用 JAVA控制臺應用程序?qū)崿F(xiàn)該設計。該模式的 UML圖如下?!灸J筋悎D】【模式代碼】package Constructor; publicclass BridgeTest publicstaticvoid main(String args) Bridge b; b=new Sugar(); 11代碼重構(gòu)與設計模式課堂實驗徐海蛟博士b.setCoffee(new JorumCoffee(); b.getCoffee(); b=new Milk(); b.setCoffee(new SmallCoffee(); b.getCoffee(); interface C
17、offee void getCoffee(); class JorumCoffee implementsCoffee Overridepublicvoid getCoffee() / TODO Autogenerated method stubSystem.out.print("大杯咖啡"); class MediumCoffee implements Coffee Overridepublicvoid getCoffee() / TODO Autogenerated method stubSystem.out.print("中杯咖啡"); class
18、SmallCoffee implements Coffee Overridepublicvoid getCoffee() / TODO Autogenerated method stubSystem.out.print("小杯咖啡"); /* * 配料 */abstractclass Bridge protected Coffee c; void setCoffee(Coffee co) c=co; publicvoid getCoffee() c.getCoffee(); 12代碼重構(gòu)與設計模式課堂實驗class Sugar extends Bridge 徐海蛟博士Ove
19、rridepublicvoid getCoffee() c.getCoffee(); System.out.println("加糖"); class Milk extends Bridge Overridepublicvoid getCoffee() c.getCoffee(); System.out.println("加牛奶"); class Lemon extends Bridge Overridepublicvoid getCoffee() c.getCoffee(); System.out.println("加檸檬"); 【運
20、行截圖】【實驗小結(jié)】橋接模式的適用情況有:當不希望在抽象和它的實現(xiàn)之間有一個固定的綁定關系時。當類的抽象以及它的實現(xiàn)都應該可以通過生成子類的方法加以擴充時。當對一個抽象類的實現(xiàn)部分的修改應對客戶不產(chǎn)生影響時。13代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗五裝飾模式的應用【實驗目的】1)掌握裝飾模式(Decorator)的特點2)分析具體問題,使用裝飾模式進行設計。【實驗內(nèi)容和要求】“喜羊羊逃命”游戲:喜羊羊被灰太狼追,喜羊羊最多 5條命,灰太狼每咬到喜羊羊一次,喜羊羊就要少一條命。在逃的過程中喜羊羊可以吃到三種蘋果,吃“紅蘋果”可以給喜羊羊加上保護罩,吃“綠蘋果”可以加快喜羊羊奔跑速度,吃“黃蘋
21、果”可以使喜羊羊趟著水跑。應用裝飾模式,用 JAVA控制臺應用程序?qū)崿F(xiàn)該設計。繪制該模式的 UML圖。提示:這個例子如果用類的繼承來實現(xiàn)的話那可就麻煩了,你需要為喜羊羊派生 3*2*1=6個子類(有保護罩的喜羊羊,奔跑速度加快的喜羊羊,會趟水的喜羊羊,既有保護罩又會趟水的喜羊羊,奔跑速度快且會趟水的喜羊羊,有保護罩且奔跑速度快的喜羊羊,有保護罩、奔跑速度快且會趟水的喜羊羊),如果使用裝飾模式的那就不用派生諸多子類了,當喜羊羊每吃到一個蘋果,我們就用裝飾模式給喜羊羊加一個動態(tài)增加一個新功能即可?!灸J筋悎D】14代碼重構(gòu)與設計模式課堂實驗【模式代碼】publicclass DecoratorTes
22、t01 徐海蛟博士publicstaticvoid main(String args) ConcreteXiYY cxyy=new ConcreteXiYY(); ProtectXiYangyang px=new ProtectXiYangyang(); FastXiYangyang fx=new FastXiYangyang(); SwimingXiYangyang sx=new SwimingXiYangyang(); px.setXiYangyang(cxyy); px.Operation(); fx.setXiYangyang(px); fx.Operation(); sx.setXi
23、Yangyang(fx); sx.Operation(); interface XiYangyang publicvoid Operation(); class ConcreteXiYY implements XiYangyang Overridepublicvoid Operation() / TODO Autogenerated method stubSystem.out.println("喜羊羊"); abstractclass Decorator implements XiYangyang protected XiYangyang xyy; publicvoid s
24、etXiYangyang(XiYangyang xyy) this.xyy=xyy; Overridepublicvoid Operation() / TODO Autogenerated method stubxyy.Operation(); 15代碼重構(gòu)與設計模式課堂實驗徐海蛟博士 class ProtectXiYangyang extends Decorator Overridepublicvoid Operation() / TODO Autogenerated method stubSystem.out.print(" 有保護罩的"); super.Operati
25、on(); class FastXiYangyang extends Decorator Overridepublicvoid Operation() / TODO Autogenerated method stubSystem.out.print(" 加速的"); super.Operation(); class SwimingXiYangyang extends Decorator OverridepublicvoidOperation() / TODO Autogenerated method stub System.out.print(" 會游泳的&quo
26、t;); super.Operation(); 【運行截圖】【實驗小結(jié)】裝飾模式的適用情況有:當需要以不影響其他對象為前提實現(xiàn)動態(tài)、透明地給單個對象添加職責時。當需要將對象的某些職責進行撤銷操作時。當不能用生成子類的方法進行當前系統(tǒng)的擴充時。16代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗六代理模式的應用【實驗目的】1)掌握代理模式(Proxy)的特點2)分析具體問題,使用代理模式進行設計。【實驗內(nèi)容和要求】生產(chǎn)商(Factory)需要銷售商品(Product),網(wǎng)上商城(E-Shop)提供了一個平臺,可以幫助銷售這些商品,獲得更大的銷量。當顧客(Custom)從網(wǎng)上商城選購商品的時候,實際是從生
27、產(chǎn)商獲得的商品。應用代理模式,用 JAVA控制臺應用程序改進該設計。繪制該模式的 UML圖?!灸J経ML圖】【實驗代碼】publicclass ProxyTest01 17代碼重構(gòu)與設計模式課堂實驗徐海蛟博士publicstaticvoid main(String args) / TODO Autogenerated method stubE_shop es=new E_shop(); duct(); abstractclass Product publicabstractvoid product(); class Factory extends Product Overridep
28、ublicvoid product() / TODO Autogenerated method stubSystem.out.println("商品正在促銷中,滿一百減 50."); class E_shop extends Product private Factory factory; public E_shop() factory=new Factory(); Overridepublicvoid product() / TODO Autogenerated method duct(); 【運行截圖】【實驗小結(jié)】代理模式的有以下幾種適用情
29、況:當需要為一個對象在不同的地址空間提供局部的代表時。當需要創(chuàng)建開銷非常大的對象時。當需要控制原始對象的訪問時。當需要再訪問對象時執(zhí)行一些附加操作時,比如通過代理對象計算訪問實際對象的次數(shù)。18代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗七觀察者模式的應用【實驗目的】1)掌握外觀模式(Observer)的特點2)分析具體問題,使用外觀模式進行設計?!緦嶒瀮?nèi)容和要求】網(wǎng)上商店中如果商品(product)在名稱(name)、價格(price)等方面有變化,系統(tǒng)能自動通知會員,將是網(wǎng)上商店區(qū)別傳統(tǒng)商店的一大特色。如何設計實現(xiàn)?說明你所選擇的設計模式,畫出類關系圖并指明各個類的角色。應用外觀模式,用 JA
30、VA控制臺應用程序改進該設計。繪制該模式的 UML圖?!灸J?UML 圖】【模式代碼】import java.util.ArrayList; publicclass ObeserverTest publicstaticvoid main(String args) / TODO Autogenerated method stubConcreteSubject cs=new ConcreteSubject(); cs.Attach(new ConcreteObserver(cs, "1號會員"); cs.Attach(new ConcreteObserver(cs, "
31、;2號會員"); cs.Attach(new ConcreteObserver(cs, "3號會員"); cs.Attach(new ConcreteObserver(cs, "4號會員"); cs.setState("C+編程思想價錢下降 100元"); 19代碼重構(gòu)與設計模式課堂實驗徐海蛟博士cs.Notify(); abstractclass Observer publicabstractvoid update(); class ConcreteObserver extends Observer private Str
32、ing name; private String state; privateConcreteSubject cs; public ConcreteSubject getConcreteSubject() returncs; publicvoid setConcreteSubject(ConcreteSubject cs) this.cs=cs; public ConcreteObserver(ConcreteSubject cs,String name) this.cs=cs; =name; Overridepublicvoid update() / TODO Autoge
33、nerated method stubstate=cs.getState(); System.out.println(name+"觀察到的狀態(tài)是:"+state); abstractclass Subject private ArrayList<Observer> observers=new ArrayList<Observer>(); publicvoid Attach(Observer o) observers.add(o); publicvoid Detach(Observer o) observers.remove(o); /通知public
34、void Notify() for (int i = 0; i < observers.size(); i+) observers.get(i).update(); 20代碼重構(gòu)與設計模式課堂實驗徐海蛟博士class ConcreteSubject extends Subject private String state; publicvoid setState(String state) this.state=state; publicString getState() returnstate; 【運行截圖】【實驗小結(jié)】觀察者模式的適用情況有:當一個抽象模型有兩個方面,而其中一個方面必
35、須依賴于另一個方面時。當對一個對象的改變需要同時改變其他對象但是卻不知道具體有多少個對象等到改變時。當一個對象必須通知其他對象但是卻不能與其他對象造成緊密耦合時。21代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗八職責鏈模式的應用【實驗目的】1)掌握職責鏈模式(Chain of Responsibility)的特點2)分析具體問題,使用職責鏈模式進行設計。【實驗內(nèi)容和要求】高校學生請假需要符合學校規(guī)定,假如班主任可以批準 1天假,系主任可以批準 7天假,各學院院長可以批準 30天,學校校長可以批準 1年。應用職責鏈模式,用 JAVA控制臺應用程序?qū)崿F(xiàn)該設計。繪制該模式的 UML圖?!灸J経ML圖】【
36、模式代碼】publicclass StudentClient publicstaticvoid main(String args) / TODO Autogenerated method stubHandler fdy=new FuDaoYuan(); Handler xzr=new XiZhuRen(); Handler xy=new XueYuan(); Handler xx=new XueXiao(); fdy.setSuccessor(xzr); xzr.setSuccessor(xy); xy.setSuccessor(xx); for (int i = 1; i < 20;
37、i+=2) fdy.handleRequest(i); 22代碼重構(gòu)與設計模式課堂實驗徐海蛟博士 /處理請求的接口abstractclass Handler protected Handler successor; publicvoid setSuccessor(Handler successor) this.successor=successor; publicabstractvoid handleRequest(int request); classFuDaoYuan extends Handler Overridepublicvoid handleRequest(int request)
38、 / TODO Autogenerated method stubif(request<=1) System.out.println(this.getClass().getSimpleName()+"處理了請求"+request); else if(this.successor!=null) System.out.println(this.getClass().getSimpleName()+"自身無法滿足請求,轉(zhuǎn)入下一個處理者"); this.successor.handleRequest(request); class XiZhuRen ext
39、ends Handler Overridepublicvoid handleRequest(int request) / TODO Autogenerated method stubif(request<=7) System.out.println(this.getClass().getSimpleName()+"處理了請求"+request); else if(this.successor!=null) System.out.println(this.getClass().getSimpleName()+"自身無法滿足請求,轉(zhuǎn)入下一個處理者");
40、 this.successor.handleRequest(request); 23代碼重構(gòu)與設計模式課堂實驗 class XueYuan extends Handler 徐海蛟博士Overridepublicvoid handleRequest(int request) / TODO Autogenerated method stubif(request<=9) System.out.println(this.getClass().getSimpleName()+"處理了請求"+request); else if(this.successor!=null) Syst
41、em.out.println(this.getClass().getSimpleName()+"自身無法滿足請求,轉(zhuǎn)入下一個處理者"); this.successor.handleRequest(request); class XueXiao extends Handler OverridepublicvoidhandleRequest(int request) / TODO Autogenerated method stubif(request<=15) System.out.println(this.getClass().getSimpleName()+"
42、;處理了請求"+request); else System.out.println("該生請假時間太長,不能批準"); 【運行截圖】FuDaoYuan處理了請求 1 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen處理了請求 3 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen處理了請求 5 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen處理了請求 7 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者24代碼重構(gòu)與設計模式課堂實驗徐海蛟博士XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYu
43、an處理了請求 9 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XueXiao處理了請求 11 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XueXiao處理了請求 13 FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XueXiao處理了請求 15 FuDaoYuan自身無法滿足請求
44、,轉(zhuǎn)入下一個處理者XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者該生請假時間太長,不能批準FuDaoYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者XiZhuRen自身無法滿足請求,轉(zhuǎn)入下一個處理者XueYuan自身無法滿足請求,轉(zhuǎn)入下一個處理者該生請假時間太長,不能批準【實驗小結(jié)】職責鏈模式主要適用于以下情況:當有多個對象可以處理同一個請求,而具體哪個對象來處理這個請求在運行時刻需要自動判定時。當需要在不明確接受者的情況下向多個對象中的某一個提交請求時。當處理一個請求的對象集合應該動態(tài)地被確定時。25代碼重構(gòu)與設計模式課堂實驗徐海蛟博士實驗九訪問
45、者模式的應用【實驗目的】1)掌握訪問者模式(Visitor)的特點2)分析具體問題,使用訪問者模式進行設計。【實驗內(nèi)容和要求】超市中有兩類商品,蘋果(Apple)和巧克力(Chocolate),顧客(Custom)將所選商品放在購物車中(Shopping Cart),然后到收銀員(Cashier)處付款。在購物過程中,顧客需要對這些商品進行訪問,以便確認這些商品的質(zhì)量,之后收銀員也需要訪問購物車內(nèi)的商品,以便計算價格。應用訪問者模式,用 JAVA控制臺應用程序?qū)崿F(xiàn)該設計。繪制該模式的 UML圖?!灸J経ML圖】26代碼重構(gòu)與設計模式課堂實驗【模式代碼】import java.util.Arra
46、yList; import java.util.List; public class ShoppingTest 徐海蛟博士/* * param args */ public static void main(String args) / TODO Autogenerated method stub ShoppingCart sc=new ShoppingCart(); sc.Attach(new Apple("Apple"); sc.Attach(new Chocolate("Chocolate"); PersonVisitor pv=new Custo
47、mer(); sc.accept(pv); PersonVisitor ps=new Cashier(); sc.accept(ps); abstract class PersonVisitor public abstract void visitorApple(Apple apple); public abstract void visitorChocolate(Chocolate chocolate); class Customer extends PersonVisitor Override public void visitorApple(Apple apple) / TODO Aut
48、ogenerated method stub System.out.println(this.getClass().getSimpleName()+" 選購"+apple.getName(); Override public void visitorChocolate(Chocolate chocolate) / TODO Autogenerated method stub System.out.println(this.getClass().getSimpleName()+" 選購"+chocolate.getName(); class Cashier
49、 extends PersonVisitor 27代碼重構(gòu)與設計模式課堂實驗徐海蛟博士Override public void visitorApple(Apple apple) / TODO Autogenerated method stub System.out.println(this.getClass().getSimpleName()+" 對"+apple.getName()+" 收銀"); Override public void visitorChocolate(Chocolate chocolate) / TODO Autogenerat
50、ed method stub System.out.println(this.getClass().getSimpleName()+" 對"+chocolate.getName()+" 收銀"); abstract class Shop protected String name; public Shop(String name) =name; public abstract void accpet(PersonVisitor pv); public String getName() return name; class Apple e
51、xtends Shop public Apple(String name) super(name); / TODO Autogenerated constructor stub Override public void accpet(PersonVisitor pv) / TODO Autogenerated method stub pv.visitorApple(this); class Chocolate extends Shop 28代碼重構(gòu)與設計模式課堂實驗徐海蛟博士public Chocolate(String name) super(name); / TODO Autogenera
52、ted constructor stub Override public void accpet(PersonVisitor pv) / TODO Autogenerated method stub pv.visitorChocolate(this); class ShoppingCart List<Shop> shops=new ArrayList<Shop>(); public void Attach(Shop shop) shops.add(shop); public void Detach(Shop shop) shops.remove(shop); public void accept(PersonVisitor visitor) for (int i = 0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都師范學院《管理軟件應用》2021-2022學年第一學期期末試卷
- 抽吸泵項目評價分析報告
- DB11-T 893-2021 地質(zhì)災害危險性評估技術規(guī)范
- 登山套具市場環(huán)境與對策分析
- 成都錦城學院《數(shù)字新媒體藝術》2023-2024學年第一學期期末試卷
- 氣門與氣門座研磨機相關項目實施方案
- 液晶顯示屏游戲機相關項目實施方案
- 電動管道疏通器市場環(huán)境與對策分析
- 《馬達加斯加》觀后感
- 貴州省頂效開發(fā)區(qū)七年級地理下冊 7.3西亞教案 (新版)湘教版
- 閘門水封更換方案(共4頁)
- 認識總體國家安全觀ppt課件
- 倒計時(1、2、3、4、5、6、7、8、9分鐘)
- 壓力管道材料等級表
- 埋地管道檢測方案
- 景物描寫作文指導
- 領導及上下級關系處理講義
- Catia百格線生成宏
- 鍋爐安全基礎知識
- 幼兒園科學教育論文范文
- 駕校質(zhì)量信譽考核制度
評論
0/150
提交評論