軟件體系結(jié)構(gòu)報(bào)告_第1頁
軟件體系結(jié)構(gòu)報(bào)告_第2頁
軟件體系結(jié)構(gòu)報(bào)告_第3頁
軟件體系結(jié)構(gòu)報(bào)告_第4頁
軟件體系結(jié)構(gòu)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件體系結(jié)構(gòu) 姓名: 學(xué)號(hào): 130511XXXX 班級(jí): 軟工1302班 2016年5月16號(hào)1、 Flyweight設(shè)計(jì)模式享元模式運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。案例: 模式的結(jié)構(gòu)中包括三種角色享元接口(Flyweight) 具體享元(Concrete Flyweight) 享元工廠(Flyweight Factory) 享元接口(Flyweight): Flyweight.javapublic interface Flyweight public double getHeight(); public double getWidth(); public double getLen

2、gth(); public void printMess(String mess); 享元工廠(FlyweightFactory): FlyweightFactory.javaimport java.util.HashMap;public class FlyweightFactory private HashMap<String,Flyweight> hashMap; static FlyweightFactory factory=new FlyweightFactory(); private FlyweightFactory() hashMap=new HashMap<St

3、ring,Flyweight>(); public static FlyweightFactory getFactory() return factory; public synchronized Flyweight getFlyweight(String key) if(hashMap.containsKey(key) return hashMap.get(key); else double width=0,height=0,length=0; String str=key.split("#"); width=Double.parseDouble(str0); he

4、ight=Double.parseDouble(str1); length=Double.parseDouble(str2); Flyweight ft=new ConcreteFlyweight(width,height,length); hashMap.put(key,ft); return ft; 具體享元: ConcreteFlyweight.javaclass ConcreteFlyweight implements Flyweight private double width; private double height; private double length; privat

5、e ConcreteFlyweight(double width,double height,double length) this.width=width; this.height=height; this.length=length; public double getHeight() return height; public double getWidth() return width; public double getLength() return length; public void printMess(String mess) System.out.print(mess);

6、System.out.print(" 寬度:"+width); System.out.print(" 高度:"+height); System.out.println("長(zhǎng)度:"+length); 應(yīng)用: Application.javapublic class Application public static void main(String args) FlyweightFactory factory=FlyweightFactory.getFactory(); double width=1.82,height=1.47,len

7、gth=5.12; String key=""+width+"#"+height+"#"+length; Flyweight flyweight=factory.getFlyweight(key); Car audiA6One=new Car(flyweight,"奧迪A6","黑色",128); Car audiA6Two=new Car(flyweight,"奧迪A6","灰色",160); audiA6One.print(); audiA6Two.p

8、rint(); width=1.77; height=1.45; length=4.63; key=""+width+"#"+height+"#"+length; flyweight=factory.getFlyweight(key); Car audiA4One=new Car(flyweight,"奧迪A4","藍(lán)色",126); Car audiA4Two=new Car(flyweight,"奧迪A4","紅色",138); flyweight.p

9、rintMess(" 名稱:奧迪A4 顏色:藍(lán)色 功率:126"); flyweight.printMess(" 名稱:奧迪A4 顏色:紅色 功率:138"); 運(yùn)行結(jié)果:2、 Chain of Responsibility設(shè)計(jì)模式責(zé)任鏈模式使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它為止。案例:用戶提交一個(gè)人的身份證號(hào)碼,想知道該人是在北京、上?;蛘咛旖蚓幼 DJ降慕Y(jié)構(gòu)中包括兩種角色處理者(Handler)具體處理者(ConcreteHandler)處理者(H

10、andler): Handler.javapublic interface Handler public abstract void handleRequest(String number); public abstract void setNextHandler(Handler handler);具體處理者(ConcreteHandler): Beijing.javaimport java.util.*;public class Beijing implements Handler private Handler handler; /包含下一個(gè)Handler對(duì)象 private ArrayL

11、ist<String> numberList; Beijing() numberList=new ArrayList<String>(); numberList.add("11129812340930034"); numberList.add("10120810340930632"); numberList.add("22029812340930034"); numberList.add("32620810340930632"); public void handleRequest(Stri

12、ng number) if(numberList.contains(number) System.out.println("該人在北京居住"); else System.out.println("該人不在北京居住"); if(handler!=null) handler.handleRequest(number); public void setNextHandler(Handler handler) this.handler=handler; 具體處理者(ConcreteHandler): Shanghai.javaimport java.util.*

13、;public class Shanghai implements Handler private Handler handler; private ArrayList<String> numberList; Shanghai() numberList=new ArrayList<String>(); numberList.add("34529812340930034"); numberList.add("98720810340430632"); numberList.add("36529812340930034&quo

14、t;); numberList.add("77720810340930632"); public void handleRequest(String number) if(numberList.contains(number) System.out.println("該人在上海居住"); else System.out.println("該人不在上海居住"); if(handler!=null) handler.handleRequest(number); public void setNextHandler(Handler hand

15、ler) this.handler=handler; 具體處理者(ConcreteHandler): Tianjin.javaimport java.util.*;public class Tianjin implements Handler private Handler handler; private ArrayList<String> numberList; Tianjin() numberList=new ArrayList<String>(); numberList.add("10029812340930034"); numberList

16、.add("20020810340430632"); numberList.add("30029812340930034"); numberList.add("50020810340930632"); public void handleRequest(String number) if(numberList.contains(number) System.out.println("該人在天津居住"); else System.out.println("該人不在天津居住"); if(handle

17、r!=null) handler.handleRequest(number); public void setNextHandler(Handler handler) this.handler=handler; 應(yīng)用 Application.javapublic class Application private Handler beijing,shanghai,tianjin; public void createChain() beijing=new Beijing(); shanghai=new Shanghai(); tianjin=new Tianjin(); beijing.set

18、NextHandler(shanghai); shanghai.setNextHandler(tianjin); public void reponseClient(String number) beijing.handleRequest(number); public static void main(String args) Application application=new Application(); application.createChain(); application.reponseClient("77720810340930632"); 運(yùn)行結(jié)果:3

19、、 Command設(shè)計(jì)模式命令模式(別名:動(dòng)作,事務(wù)) 將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤消的操作。案例:在軍隊(duì)作戰(zhàn)中,指揮官請(qǐng)求三連偷襲敵人,但是指揮官不希望或無法直接與三連取得聯(lián)系,那么可以將該請(qǐng)求:“三連偷襲敵人”形成一個(gè)“作戰(zhàn)命令”。只要能讓該作戰(zhàn)命令被執(zhí)行,就會(huì)實(shí)現(xiàn)三連偷襲敵人的目的。模式的結(jié)構(gòu)中包括四種角色接收者(Receiver):實(shí)現(xiàn)與執(zhí)行一個(gè)請(qǐng)求相關(guān)的操作 。請(qǐng)求者(Invoker):要求該命令執(zhí)行這個(gè)請(qǐng)求 。命令( Command ):聲明執(zhí)行操作的接口。 具體命令(ConcreteCommand):將一個(gè)接收者對(duì)象綁定于一個(gè)動(dòng)作。調(diào)用接收者相應(yīng)的操作,以實(shí)現(xiàn)Execute。接收者(Receiver) : CompanyArmy.javapublic class CompanyArmy public void sneakAttack() System.out.println("我們知道如何偷襲敵人,保證完成任務(wù)"); 命令(Command)接口 : Command.javapublic interface Command public abstract void execute();具體命令(ConcreteCommand) Conc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論