2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第14章原則和模式為了有效地使用像UML這樣的設(shè)計(jì)表示法,只是掌握不同類型的語法和語義是不夠的。形式表示法的可用性并不能保證會很好地使用這些表示法,好的設(shè)計(jì)和不好的設(shè)計(jì)都可以用UML表達(dá)。當(dāng)然,好的設(shè)計(jì)和不好的設(shè)計(jì)之間的不同特征是很難用純粹的形式詞語描述的,很可能在任何完備程度上也不可能做到。推薦某些方法,保證設(shè)計(jì)師做出的設(shè)計(jì)一定是好的設(shè)計(jì)也非常困難。然而現(xiàn)在已經(jīng)有了面向?qū)ο蠼:驮O(shè)計(jì)的大量經(jīng)驗(yàn),使我們可以更好地理解怎樣做可能會使設(shè)計(jì)成

2、功或不成功。面向?qū)ο笤O(shè)計(jì)師們積累的經(jīng)驗(yàn)可以分為兩個(gè)不同的范疇。一類是一些廣泛認(rèn)可的高級設(shè)計(jì)原則。這些原則描述了設(shè)計(jì)應(yīng)當(dāng)具有的或者應(yīng)當(dāng)避開的值得注意的性質(zhì)。對于依據(jù)這些原則的基本原理所指出的設(shè)計(jì)特征建立的系統(tǒng),經(jīng)驗(yàn)證實(shí),可以預(yù)知其結(jié)果。這些高級原則是很重要的,但是對于試圖針對具體應(yīng)用建模的設(shè)計(jì)師,卻幾乎不能提供可操作的指導(dǎo)。針對這些情況,需要一些記實(shí)性地描述不同種類的設(shè)計(jì)知識,這些知識更關(guān)注特定的問題和解決這些問題的策略。當(dāng)前在設(shè)計(jì)模式方

3、面的工作就是通過識別共同的建模問題,并對這些問題提供經(jīng)過驗(yàn)證的解決方案的方式,滿足這種需要。本章將討論若干已知的廣泛接受的面向?qū)ο笤O(shè)計(jì)的原則,然后介紹設(shè)計(jì)模式的概念。模式的用法將通過考慮對本書前面章節(jié)中出現(xiàn)的程序的修改予以介紹。14.1開閉原則開(放)(封)閉原則是BertrMeyer1988年在他的有影響的著作《面向?qū)ο蟮能浖?gòu)造》中闡述的。這個(gè)原則關(guān)注的是系統(tǒng)內(nèi)部改變的影響,特別是最大限度地使模塊免受它所使用的其它模塊改變的影響的辦

4、法。考慮系統(tǒng)中一個(gè)模塊使用另一個(gè)模塊提供的服務(wù)的情況。通常稱前一個(gè)模塊為客戶(client),后一個(gè)模塊為供應(yīng)者(supplier)。雖然這兩個(gè)概念有更廣泛的使用,本章詳細(xì)考慮的只是用于類之間的關(guān)系,即可以用UML的使用依賴建模的關(guān)系。圖14.1表示了這種情況。訪問級在UML中也稱為可見性,它指明了客戶可以看到一個(gè)類的哪些特征。圖14.2中供應(yīng)者類中的操作聲明為公有的因此客戶可以看到,而屬性是私有的因而是不可見的。從客戶的視角看,類的接

5、口是僅有的可見的特征。如果可見的接口保持不變,不可見的特征可以改變、去掉或增加,都不會對客戶產(chǎn)生影響。例如,在Java中,圖14.2中的供應(yīng)者類可以如下實(shí)現(xiàn)。這個(gè)類中公有方法的實(shí)現(xiàn)可以改變而不會對客戶類有任何影響,類似地,支持該類的方法實(shí)現(xiàn)所需要的私有域也可以增加或去掉。為了避免影響客戶,必須保持不變的只是由該類公有方法的名稱和特征標(biāo)記(signature)組成的可見接口。然而實(shí)現(xiàn)開閉原則的這種方式有許多局限。從根本上講,由于系統(tǒng)的修改

6、要求改變客戶類的代碼,客戶模塊在技術(shù)上是不可能關(guān)閉的。如果更實(shí)質(zhì)的目標(biāo)可以達(dá)到,這種改變可以作為字面上的違反來看待,而不是違背了開閉原則的精神實(shí)質(zhì),但是數(shù)據(jù)抽象方式還存在另外的更本質(zhì)的問題。首先,雖然在Java中私有域可以被增加到類中而不會影響客戶,但并不是所有程序設(shè)計(jì)環(huán)境都是如此。例如,在C中類的定義典型地是由頭文件和實(shí)現(xiàn)文件分擔(dān)的,頭文件實(shí)際上是被合并到客戶模塊中去的。這樣,對頭文件的任何改變,例如,增加一個(gè)新的域,就需要重新編譯客

7、戶模塊,即使這種改變對客戶模塊是不可見的。如果開閉原則的實(shí)現(xiàn)可以做到獨(dú)立于語言,是更可取的。其次,在數(shù)據(jù)抽象方式中,客戶模塊所需要的接口仍處在隱含的狀態(tài)??蛻艨赡苁褂霉?yīng)者提供給他的可見到的所有特征,但也可能并不需要。實(shí)際上一個(gè)模塊的不同客戶或許使用的只是一個(gè)模塊可見接口的不同子集。這就很難準(zhǔn)確地知道,對一個(gè)模塊的哪些改變會影響給定的客戶。通過將客戶模塊所需要的接口用文檔明確地加以描述,將會改進(jìn)文檔的編制和可維護(hù)性。1412抽象接口類抽

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論