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

下載本文檔

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

文檔簡(jiǎn)介

1、1.簡(jiǎn)述“開(kāi)閉”原則的基基本思想。請(qǐng)舉出一一個(gè)使用了了軟件“開(kāi)閉”原則的軟軟件設(shè)計(jì)模模式,其中中何處體現(xiàn)現(xiàn)了“開(kāi)閉”原則。答:“開(kāi)閉”原則:軟軟件實(shí)體應(yīng)應(yīng)當(dāng)對(duì)擴(kuò)展展開(kāi)放,而而對(duì)修改關(guān)關(guān)閉,“開(kāi)-閉”原則要求求軟件系統(tǒng)統(tǒng)能夠在不不需要修改改原有類的的基礎(chǔ)上,通通過(guò)增加類類達(dá)到擴(kuò)展展功能的目目的。Abstrract facttory體現(xiàn)了這這個(gè)原則,如如果想增加加一類新的的prodductss,只需在prodduct類體系中中增加各個(gè)prodductss,然后在factoory類體系結(jié)結(jié)構(gòu)中增加加一個(gè)concrrete facttory就可以了了,而不需需要對(duì)現(xiàn)有有類做任何何修改,The Open

2、n-cloosed prinnciplleoccp在不改動(dòng)動(dòng)過(guò)模塊源源代碼的情情況下擴(kuò)展展模塊的行行為。軟件實(shí)體(類類模塊 函數(shù)等)應(yīng)應(yīng)該是可以以擴(kuò)展的,但但是不可以以修改的。2.簡(jiǎn)述依依賴?yán)D(zhuǎn)原原則的基本本思想。請(qǐng)請(qǐng)舉出一個(gè)個(gè)使用了軟軟件依賴原原則的軟件件設(shè)計(jì)模式式,其中何何處體現(xiàn)了了依賴原則則。答:依賴倒倒置原則的的基本思想想是:高層模塊塊不應(yīng)該依依賴于低層層模塊,二二者都應(yīng)該該依賴于抽抽象。抽象不應(yīng)應(yīng)該依賴于于細(xì)節(jié),細(xì)節(jié)應(yīng)該該不依賴于于抽象。TTomplaate mmethood就體現(xiàn)了了這個(gè)原則則,它定義義了一個(gè)操操作中的算算法骨架,而而將一些步步驟延遲到到子類中,tempplatee

3、 metthod使得子類類不改變一一個(gè)算法的的結(jié)構(gòu),即即可重定義義該算法的的某些特定定步驟。 3.什么是是單一職責(zé)責(zé)原則?請(qǐng)請(qǐng)舉出一個(gè)個(gè)使用了單單一職責(zé)原原則的軟件件設(shè)計(jì)模式式,其中何何處體現(xiàn)了了單一職責(zé)責(zé)原則。答:基本思思想:SRP使得一個(gè)個(gè)類或一個(gè)個(gè)模塊承擔(dān)擔(dān)的責(zé)任盡盡可能的少少,使盡可可能少的因因素或動(dòng)機(jī)機(jī)影響該類類或該模塊塊,即增大大類或模塊塊的內(nèi)聚性性,減少其其耦合度,SRP是所有原原則中最簡(jiǎn)簡(jiǎn)單的之一一,也是最最難正確運(yùn)運(yùn)用的之一。COMMAAND模式體現(xiàn)現(xiàn)了SRP原則,大大多數(shù)類都都是一組方方法和相應(yīng)應(yīng)的一組變變量的結(jié)合合,而該模模式只是封封裝了一個(gè)個(gè)沒(méi)有任何何變量的函函數(shù),它對(duì)

4、對(duì)函數(shù)的關(guān)關(guān)注超過(guò)了了類,將一一個(gè)請(qǐng)求封封裝為一個(gè)個(gè)對(duì)象,從從而可用不不同的請(qǐng)求求對(duì)客戶進(jìn)進(jìn)行參數(shù)化化。4.軟件復(fù)復(fù)用可采用用類的繼承承方式和類類的聚合方方式,比較較兩者的優(yōu)優(yōu)缺點(diǎn)。答:聚合:一個(gè)對(duì)象象擁有另一一個(gè)對(duì)象或或?qū)α硪粋€(gè)個(gè)對(duì)象負(fù)責(zé)責(zé)(即一個(gè)個(gè)對(duì)象包含含另一個(gè)對(duì)對(duì)象或是另另一個(gè)對(duì)象象的一部分分)并且聚聚合對(duì)象和和其所有具具有相同的的生命周期期(即所謂謂的“同生共死”關(guān)系)。聚合復(fù)用優(yōu)優(yōu)點(diǎn):容器類僅僅能通過(guò)被被包含對(duì)象象的接口來(lái)來(lái)對(duì)其進(jìn)行訪問(wèn)?!昂诤小睆?fù)用,因因?yàn)楸话瑢?duì)象的內(nèi)內(nèi)部細(xì)節(jié)對(duì)對(duì)外是不可可見(jiàn)。包裝性好好。實(shí)現(xiàn)上的的相互依賴賴性比較小小。每一個(gè)類類只專注于于一項(xiàng)任務(wù)務(wù)。通過(guò)獲取

5、取指定其他他的具有相相同類型的的對(duì)象的使使用,可以以在運(yùn)行期期間動(dòng)態(tài)地地定義(對(duì)對(duì)象的)組組合。聚合的缺點(diǎn)點(diǎn):導(dǎo)致系統(tǒng)統(tǒng)中的對(duì)象象過(guò)多 為了能將將多個(gè)不同同的對(duì)象作作為組合塊塊來(lái)使用,必必須仔細(xì)地地對(duì)接口進(jìn)進(jìn)行定義。類繼承:是是一種通過(guò)過(guò)擴(kuò)展(一一個(gè)已有對(duì)對(duì)象的)實(shí)實(shí)現(xiàn),從而而獲得新功功能的復(fù)用用方法。繼承的優(yōu)點(diǎn)點(diǎn):容易進(jìn)行行新的實(shí)現(xiàn)現(xiàn),因?yàn)槠淦浯蠖鄶?shù)可可繼承而來(lái)來(lái) 易于修改改或擴(kuò)展那那些被復(fù)用用的實(shí)現(xiàn)。繼承的缺點(diǎn)點(diǎn):破壞了封裝性,因?yàn)檫@這會(huì)將父類類的實(shí)現(xiàn)細(xì)細(xì)節(jié)暴露給給子類 “白盒”復(fù)用,因因?yàn)楦割惖牡膬?nèi)部細(xì)節(jié)節(jié)對(duì)于子類類而言通常常是可見(jiàn)的的 當(dāng)父類的的實(shí)現(xiàn)更改改時(shí),子類類也不得不不隨之更改改

6、 從父類繼繼承來(lái)的實(shí)實(shí)現(xiàn)將不能能在運(yùn)行期期間進(jìn)行改改變。5.畫(huà)出工工廠方法模模式的結(jié)構(gòu)構(gòu)圖。什么么情況下適適合使用工工廠方發(fā)模模式?其中prooductt:為工廠廠模式所要要?jiǎng)?chuàng)建的對(duì)對(duì)象類型定定義一個(gè)接接口。Concrrete prodduct:實(shí)現(xiàn)prodduct接口。Creattor:聲明工工廠方法(facttory methhod)返回值值為prodduct的一個(gè)對(duì)對(duì)象。Concrrete creaator:覆寫(xiě)facttory Methhod(),返回值值為conccretee prooductt 的一個(gè)具具體實(shí)例。在下面情況況下你可以以考慮使用用工廠方法法模式: 1) 當(dāng)當(dāng)客戶程序序

7、不需要知知道要使用用對(duì)象的創(chuàng)創(chuàng)建過(guò)程。 2) 客客戶程序使使用的對(duì)象象存在變動(dòng)動(dòng)的可能,或或者根本就就不知道使使用哪一個(gè)個(gè)具體的對(duì)對(duì)象。6.畫(huà)出合合成模式(Comppositte)的結(jié)構(gòu)構(gòu)圖。舉例例說(shuō)明一個(gè)個(gè)可以應(yīng)用用合成模式式的軟件設(shè)設(shè)計(jì)實(shí)例,說(shuō)說(shuō)明其中各各角色的作作用。實(shí)例:計(jì)算算機(jī)和立體體組合音響響這樣的設(shè)設(shè)備經(jīng)常被被組裝成一一部分整體體層次結(jié)構(gòu)構(gòu)或者是容容器層次結(jié)結(jié)構(gòu),例如如:底盤(pán)可可以包含驅(qū)驅(qū)動(dòng)裝置和平平面板,總總線含有多多個(gè)插件,機(jī)機(jī)柜包括底底盤(pán)、總線線等。這樣樣結(jié)構(gòu)很自自然的用comppositte模式進(jìn)行行模擬。Equippmentt類為在部部分整體層次次結(jié)構(gòu)中的的所有設(shè)備備定

8、義一個(gè)個(gè)接口。Equiipmennt聲明一些些操作返回回一個(gè)設(shè)備備的屬性,例例如它的能能是消耗和和價(jià)格。子子類為指定定的設(shè)備實(shí)實(shí)現(xiàn)了這些些操作,Equiipmennt還聲明了了一個(gè)Creaate IIteraator 操作,該該操作為訪訪問(wèn)它的零零件返回一一個(gè)Iterratorr ,這個(gè)操作作的缺省實(shí)實(shí)現(xiàn)返回一一上NulllIterratorr,它在空空集上迭代代。Compoositee Equuipmeent是包含其它設(shè)設(shè)備的基類類,它也是是Equiipmennt的子類。7.簡(jiǎn)述門門面模式(Facaade)和中介介者模式(Mediiatorr)的基本本思想,兩兩者的差異異何在?答:門面模模式

9、(facaade)又稱外外觀模式。基本思想想:為子系系統(tǒng)中的一一組接口提提供一個(gè)一一致的界面面, Faccade模式定義義了一個(gè)高高層接口,這這個(gè)接口使使得這一子子系統(tǒng)更加加容易使用用?!爸薪檎吣DJ健被舅枷胂耄篗eddiatoor Paatterrn 中文譯為“中介者模模式”、“調(diào)停者模模式”。調(diào)停者者模式的定定義是:用用一個(gè)調(diào)停停對(duì)象來(lái)封封裝一系列列的對(duì)象交交互。調(diào)停停者使各對(duì)對(duì)象不需要要顯式地相相互引用,從從而使其耦合松松散,而且且可以獨(dú)立立地改變它它們之間的的交互。簡(jiǎn)簡(jiǎn)單點(diǎn)來(lái)說(shuō)說(shuō),將原來(lái)來(lái)兩個(gè)直接接引用或者者依賴的對(duì)對(duì)象拆開(kāi),在在中間加入入一個(gè)“調(diào)停”對(duì)象,使使得兩頭的的對(duì)象分別別和

10、“調(diào)?!睂?duì)象引用用或者依賴賴。兩者的差異異: 從目的上上看,調(diào)停停者模式與與門面模式式有些相似似。 但是門面面模式是介介于客戶程程序與子系系統(tǒng)之間的的,而調(diào)停停者模式是是介于子系系統(tǒng)與子系系統(tǒng)之間的的。這也注注定了它們們有很大的的區(qū)別:門門面模式是是將原有的的復(fù)雜邏輯輯提取到一一個(gè)統(tǒng)一的的接口,簡(jiǎn)簡(jiǎn)化客戶對(duì)對(duì)邏輯的使使用。它是是被客戶所所感知的,而而原有的復(fù)復(fù)雜邏輯則則被隱藏了了起來(lái)。而而調(diào)停者模模式的加入入并沒(méi)有改改變客戶原原有的使用用習(xí)慣,它是隱藏在在原有邏輯輯后面的,使使得代碼邏邏輯更加清清晰可用。8.簡(jiǎn)述觀觀察者模式式的基本思思想,如何何實(shí)現(xiàn)當(dāng)目目標(biāo)對(duì)象發(fā)發(fā)生變化時(shí)時(shí)多個(gè)觀察察者對(duì)象的

11、的同步更新新?畫(huà)出他他們之間的的協(xié)作圖。(1)Obbservver(觀察者者)基本思思想:對(duì)象象間的一種種一對(duì)多的的依賴關(guān)系系。當(dāng)一個(gè)個(gè)對(duì)象的狀狀態(tài)發(fā)生變變化時(shí),所所有依賴于于它的對(duì)象象都得到通通知并自動(dòng)動(dòng)更新。(2)協(xié)作作:當(dāng)Conccretee Subbjectt發(fā)生任何何可能導(dǎo)到到其參觀者者與其本身身狀態(tài)不一一致的改變變時(shí),它將將通知它的的各個(gè)觀察察者。在得得到一個(gè)具具體的目標(biāo)標(biāo)改變通知知后,Conccretee Objject對(duì)象可向向目標(biāo)對(duì)象象查詢信息息,Conccretee Objject使用這個(gè)個(gè)些信息以以使它的狀狀態(tài)與目標(biāo)標(biāo)對(duì)象的狀狀態(tài)一致。(3)協(xié)作作圖:9.舉一適適合使用S

12、tatte模式的例例子。與不不使用該模模式相比,有有哪些優(yōu)點(diǎn)點(diǎn)?舉例:抽象象狀態(tài)類定定義了一個(gè)個(gè)抽象方法法“寫(xiě)程序”與不使用該該模式相比比優(yōu)點(diǎn):Statee模式將特特定的狀態(tài)態(tài)相關(guān)的行行為封裝在在一個(gè)類中中,由于所所有狀態(tài)相相關(guān)的代碼碼都存在于于某個(gè)conccretee staate中,所以以通過(guò)定義義新的子類類可以很容容易的增加加新的狀態(tài)態(tài)和轉(zhuǎn)換。10.有哪哪些模式的的使用可以以使得類的的復(fù)用性增增強(qiáng)?說(shuō)明明你的理由由。策略模式(straategy) 屬于對(duì)象象行為型模模式,主要要定義一系系列的算法法,把這些些算法一個(gè)個(gè)個(gè)封裝成成擁有共同同接口的單單獨(dú)的類,并并使他們之之間互換,客客戶端調(diào)用

13、用他們的時(shí)時(shí)候互不影影響。算法法使用和算算法分離,即即將變化的的具體算法法封裝起來(lái)來(lái),降低了了代碼的耦耦合度,算算法提取起起來(lái),使算算法得到重重用。中介者模式式(mediiatorr) 用一一個(gè)調(diào)停對(duì)對(duì)象來(lái)封裝裝一系列的的對(duì)象交互互。調(diào)停者者使各對(duì)象象不需要顯顯式地相互互引用,從從而使其耦耦合松散,而而且可以獨(dú)獨(dú)立地改變變它們之間間的交互。即,將原原來(lái)的兩個(gè)個(gè)直接引用用或者依賴賴的對(duì)象拆拆開(kāi),在中中間加入一一個(gè)“調(diào)?!睂?duì)象,使使得兩頭的的對(duì)象分別別和“調(diào)?!睂?duì)象引用用或者依賴賴。提高了了原有系統(tǒng)統(tǒng)的可讀性性,將原有有系統(tǒng)的多多對(duì)多轉(zhuǎn)化化為一對(duì)多多,提高了了代碼的可可復(fù)用性。適配器(AAdapt

14、ter)模式 是的原本本由于接口口不兼容而而不能再一一起的那些些類可以一一起工作。如畫(huà)圖程程序中,已已實(shí)現(xiàn)繪制制點(diǎn),直線線等功能。為了讓客客戶程序在在使用的時(shí)時(shí)候不用關(guān)關(guān)心不同定定義,定義義個(gè)抽象類類規(guī)范接口口,當(dāng)去實(shí)實(shí)現(xiàn)繪圖時(shí)時(shí),發(fā)現(xiàn)系系統(tǒng)其它地地方已有制制圖實(shí)現(xiàn),但但是系統(tǒng)已已有的方法法與抽象類類中規(guī)定方方法不一樣樣,這時(shí)候候用適配器器模式可以以解決這問(wèn)問(wèn)題。適配配器模式是是為了面向向接口編程程中更好的的復(fù)用。11.比較較Adappter和Proxxy模式使用用上的異同同之處。適配器模式式(Adaapterr):將一一個(gè)類的接接口轉(zhuǎn)換成成客戶希望望的另外一一個(gè)接口。Adappter 模式使

15、得得原本由于于接口不兼兼容而不能能一起工作作的那些類類可以一起起工作。代理模式有有兩個(gè)英文文名字:Proxxy Paatterrn 和 Surrrogaate PPatteern。代代理模式:為其他對(duì)對(duì)象提供一一種代理以以控制對(duì)這這個(gè)對(duì)象的的訪問(wèn)。說(shuō)說(shuō)白了就是是,在一些些情況下客客戶不想或或者不能直直接引用一一個(gè)對(duì)象,而而代理對(duì)象象可以在客客戶和目標(biāo)標(biāo)對(duì)象之間間起到中介介作用,去去掉客戶不不能看到的的內(nèi)容和服服務(wù)或者增增添客戶需需要的額外外服務(wù)。兩者的主要要區(qū)別在于于代理模式式應(yīng)用的情情況是不改改變接口命命名的,而而且是對(duì)已已有接口功功能的一種種控制;而而適配器模模式則強(qiáng)調(diào)調(diào)接口轉(zhuǎn)換換。 12

16、.說(shuō)明明Obseerverr模式的基基本實(shí)現(xiàn)方方式。如果果不用該模模式,要達(dá)達(dá)到同樣的的效果,你你會(huì)如何做做?觀察者模式式在關(guān)于目目標(biāo)角色、觀察者角角色通信的的具體實(shí)現(xiàn)現(xiàn)中,有兩兩個(gè)版本。一種情況便便是目標(biāo)角角色在發(fā)生生變化后,僅僅僅告訴觀觀察者角色色“我變化了”;觀察者者角色如果果想要知道道具體的變變化細(xì)節(jié),則則就要自己己從目標(biāo)角角色的接口口中得到。這種模式式被很形象象的稱為:拉模式就是說(shuō)變變化的信息息是觀察者者角色主動(dòng)動(dòng)從目標(biāo)角角色中“拉”出來(lái)的。 還有一種方方法,那就就是我目標(biāo)標(biāo)角色“服務(wù)一條條龍”,通知你你發(fā)生變化化的同時(shí),通通過(guò)一個(gè)參參數(shù)將變化化的細(xì)節(jié)傳傳遞到觀察察者角色中中去。這就

17、就是“推模式”管你要不不要,先給給你啦。 這兩種模模式的使用用,取決于于系統(tǒng)設(shè)計(jì)計(jì)時(shí)的需要要。如果目目標(biāo)角色比比較復(fù)雜,并并且觀察者者角色進(jìn)行行更新時(shí)必必須得到一一些具體變變化的信息息,則“推模式”比較合適適。如果目目標(biāo)角色比比較簡(jiǎn)單,則“拉模式”就很合適。 如果果不使用該該模式,可可采用策略略模式,將不同的的情況作為為子類封裝裝在一個(gè)類類中,模擬obsserveer模式中中目標(biāo)角色色的不同狀狀態(tài),當(dāng)外外部狀態(tài)發(fā)發(fā)生變化時(shí)時(shí),可以選擇不不同的straategyy1、straategyy2改變觀察察者角色,從從而達(dá)到與與觀察者模模式同樣的的效果。13.請(qǐng)列列舉一個(gè)使使用裝飾模模式的例子子。畫(huà)出你

18、你的例子的的類圖結(jié)構(gòu)構(gòu)。JUnitt 中的裝裝飾模式:在 JUnnit 中,TesttCasee 是一個(gè)很很重要的類類,允許對(duì)對(duì)其進(jìn)行功功能擴(kuò)展。 在 junnit.eextennsionns 包中,TesttDecooratoor、RepeeateddTestt 便是對(duì) TesstCasse 的裝飾模模式擴(kuò)展。下面我們們將它們和和上面的角角色對(duì)號(hào)入入座。14.列舉舉兩個(gè)可以以使我們?cè)谠诔绦蛑胁徊槐厥褂胕felse結(jié)構(gòu)的軟軟件設(shè)計(jì)模模式。使用用軟件設(shè)計(jì)計(jì)模式是如如何做到這這一點(diǎn)的?策略模式(straategyy)和狀態(tài)態(tài)模式(statte)策略模式是是將不同算算法(處理理方法)封封裝到stat

19、tegy類中,狀狀態(tài)模式是是將不同狀狀態(tài)封裝到到statte類中。二者都是是通過(guò),類類中的子類類,實(shí)現(xiàn)不不同情況的的調(diào)用,從從而有效的的替換充滿滿在程序中中的 if elsee 語(yǔ)句。15.你認(rèn)認(rèn)為在Linuux平臺(tái)上直直接運(yùn)行WIN32程序有可可能嗎?如如認(rèn)為不可可能請(qǐng)說(shuō)明明理由;如如認(rèn)為可能能應(yīng)如何實(shí)實(shí)現(xiàn)這一目目標(biāo)?(1)兩個(gè)個(gè)OS內(nèi)部實(shí)現(xiàn)現(xiàn)有很大差差別,甚至至連路徑的的分隔符都都不一樣,一一個(gè)WIN332程序無(wú)論論如何到了了最后也要要調(diào)用Winddow aapi,而這些api在linuux上根本沒(méi)沒(méi)有實(shí)現(xiàn)(2)例如:就用戶界界面來(lái)說(shuō),有有些winddows的控件,在在Linuux上根本連連對(duì)應(yīng)的具具有類似功功能的控件件都沒(méi)有怎怎么執(zhí)行?如果再涉涉及進(jìn)程,線線程就更復(fù)復(fù)雜了,差

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論