軟件設(shè)計(jì)模式_第1頁
軟件設(shè)計(jì)模式_第2頁
軟件設(shè)計(jì)模式_第3頁
軟件設(shè)計(jì)模式_第4頁
軟件設(shè)計(jì)模式_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件設(shè)計(jì)模式作圖題有電視機(jī)工廠(TVFAacyory)和電視機(jī)(TV)這兩種類型的對(duì)象,電視機(jī)的主要方法是(void play()),電視機(jī)工廠的主要方法是(TV produceTV()).已經(jīng)知道海爾工廠專門負(fù)責(zé)生產(chǎn)海爾電視機(jī),海信工廠專門負(fù)責(zé)生產(chǎn)海信電視機(jī),請(qǐng)按具體工廠模式畫出類圖。P83有直接面向客戶的抽象目標(biāo)類Robot,其提供的抽象方法為(void cry())和(void move())?,F(xiàn)有仿生機(jī)器狗類Dog,其提供方法分別為(void wang())和(void run())。有一個(gè)適配器類DogAdapter類,使得客戶可以通過DogAdapter類訪問Dog類的方法。請(qǐng)按類

2、適配器模式畫出類圖。P152有Buttom、Windows、Command、ExitCommd四個(gè)類。其中Buttom類是調(diào)用者;Windows類是接受者,有一個(gè)exitwnd()方法,是調(diào)用者最終所期望的運(yùn)行的方法;Command類是抽象命令類,其中有一個(gè)抽象方法execute();ExitCommand是具體的命令類,實(shí)現(xiàn)了execute()方法,請(qǐng)按命令模式畫出類圖。假設(shè)貓(Cat)是老鼠(Mouse)和狗(Dog)的觀察目標(biāo)(AnimalSubject),老鼠和狗是觀察者(AnimalObserver),貓叫(cry())老鼠跑,狗也跟著叫,使用觀察者模式描述該過程的類圖。程序題某OA

3、系統(tǒng)中,系統(tǒng)根據(jù)對(duì)比用戶在登錄時(shí)輸入的帳號(hào)和密碼以及在數(shù)據(jù)庫中存儲(chǔ)的帳號(hào)和密碼是否一致來進(jìn)行身份驗(yàn)證,如果驗(yàn)證通過,則取出存儲(chǔ)在數(shù)據(jù)庫中的用戶權(quán)限等級(jí)(以整數(shù)形式存儲(chǔ)),根據(jù)不同的權(quán)限等級(jí)創(chuàng)建不同等級(jí)的用戶對(duì)象,不同等級(jí)的用戶對(duì)象擁有不同的操作權(quán)限?,F(xiàn)使用簡(jiǎn)單工廠模式來設(shè)計(jì)該權(quán)限模塊。P69public abstract class User public abstract void diffOperation();public class Employee extends User public Employee() System.out.println(“創(chuàng)建員工對(duì)象!”); public

4、 void diffOperation() System.out.println(“員工有創(chuàng)建假條權(quán)限!”);public class Manager extends User public Manager() System.out.println(“創(chuàng)建經(jīng)理對(duì)象!”); public void diffOperation() System.out.println(“經(jīng)理有創(chuàng)建和審批假條權(quán)限!”);public class Admin extends User public Admin() System.out.println(“創(chuàng)建管理員對(duì)象!”); public void diffOper

5、ation() System.out.println(“管理員有創(chuàng)建和管理假條權(quán)限!”);public class UserFactory public static User getUser(int prr) if(0=per)return new Employee();else if(1=per)return new Manager();else if(2=per)return new Admin();elsereturn null;現(xiàn)在考察一個(gè)電源總開關(guān)的例子,以便進(jìn)一步說明外觀模式。為了使用方便,一個(gè)電源總開關(guān)可以控制一個(gè)風(fēng)扇、一臺(tái)空調(diào)和一臺(tái)電視機(jī)的啟動(dòng)和關(guān)機(jī)。通過改電源總開關(guān)可以同時(shí)

6、控制上述所有設(shè)備,使用外觀模式設(shè)計(jì)該系統(tǒng)。P218風(fēng)扇類Public class Fan Public void on() System.out.println(“風(fēng)扇打開!”);Public void off() System.out.println(“風(fēng)扇關(guān)閉!”);空調(diào)類Public class AirConditioner Public void on() System.out.println(“空調(diào)打開!”);Public void off() System.out.println(“空調(diào)關(guān)閉!”);電視機(jī)類Public class Television Public void on

7、() System.out.println(“電視機(jī)打開!”);Public void off() System.out.println(“電視機(jī)關(guān)閉!”);外觀類Public class Switch Private Fan fan; Private AirConditioner ac; Private Television tc;Public Switch() fan=new Fan(); ac=new AirConditioner(); tv=new Television();Public void on() fan.on(); ac.on(); tv.on();Public void

8、off() fan.off(); ac.off(); tv.off();某系統(tǒng)日志記錄器要求支持多種日志記錄方式,如文件記錄、數(shù)據(jù)庫記錄等,且用戶可以根據(jù)要求動(dòng)態(tài)選擇日志記錄方式,現(xiàn)使用工廠方法模式設(shè)計(jì)該系統(tǒng)。public interface Log public void writeLog();public class FileLog implements Log public void writeLog() System.out.println(“文件記錄!”);public class DatabaseLog implements Log public void writeLog() S

9、ystem.out.println(“數(shù)據(jù)庫記錄!”);public interface LogFactory public void createLog();public class FileLogFactory implements LogFactory public void createLog() System.out.println(“文件記錄創(chuàng)建中!”); return new FileLog();public class DatabaseLogFactory implements LogFactory public void createLog() System.out.prin

10、tln(“數(shù)據(jù)庫記錄創(chuàng)建中!”); return new DatabaseLog();請(qǐng)編寫類MyObj的克隆方法deepClone,MyObj有兩個(gè)私有屬性分別為x和y,其類型為string。public class MyObj implements Serializable private string x=null; private string y=null;public MyObj() this.x=new string(); this.y=new string();public deepClone() throws IOException,ClassNotFoundExceptio

11、n,OptionalDataException ByteArrayOutputStream bao=new ByteArrayOutputStream(); ObiectOutputStream oos=new ObiectOutputStream(bao); oos.writeObject(this); ByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteArray(); ObiectInputStream ois=new ObiectInputStream(bis); return(ois.readObject();)pu

12、blic string getx() return this.x;public string gety() return this.y;public void display()System.out.println(“查看x,y”);用JAVA代碼模擬實(shí)現(xiàn)“數(shù)學(xué)運(yùn)算代理”實(shí)例,運(yùn)算包括加減乘除,數(shù)據(jù)類型為double。public interface Calculatorpublic double add(double x,double y);public double sub(double x,double y);public double mul(double x,double y);pu

13、blic double div(double x,double y);public class RealCalculator implements Calculatorpublic double add(double x,double y) return x+y; public double sub(double x,double y) return x-y ; public double mul(double x,double y) return x*y; public double div(double x,double y) return x/y; public class ProxyC

14、alculator implements Calculator private RealCalculator real public void init() real=new RealCalculator(); public double add(double x,double y) real.add(x,y);public double sub(double x,double y) real.sub(x,y);public double mul(double x,double y) real.mul(x,y);public double div(double x,double y) real.div(x,y);設(shè)計(jì)模式的7個(gè)原則(P26)單一職責(zé)原則開閉原則里氏代換原則依賴倒轉(zhuǎn)原則接口隔離原則合成復(fù)用原則迪米特法則簡(jiǎn)要分析各個(gè)模式的角色。簡(jiǎn)單工廠模式:工廠角色,抽象

溫馨提示

  • 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. 人人文庫網(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)論