南京理工大學(xué)-設(shè)計(jì)模式在分層架構(gòu)中的應(yīng)用分析-作業(yè)模板_第1頁
南京理工大學(xué)-設(shè)計(jì)模式在分層架構(gòu)中的應(yīng)用分析-作業(yè)模板_第2頁
南京理工大學(xué)-設(shè)計(jì)模式在分層架構(gòu)中的應(yīng)用分析-作業(yè)模板_第3頁
南京理工大學(xué)-設(shè)計(jì)模式在分層架構(gòu)中的應(yīng)用分析-作業(yè)模板_第4頁
南京理工大學(xué)-設(shè)計(jì)模式在分層架構(gòu)中的應(yīng)用分析-作業(yè)模板_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(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)設(shè)計(jì)與模式分析論文 論文題目:設(shè)計(jì)模式在企業(yè)管理分層架構(gòu)中的應(yīng)用 學(xué) 號(hào): XX 姓 名: XX 聯(lián)系方式: XX 設(shè)計(jì)模式在企業(yè)管理分層架構(gòu)中的應(yīng)用摘要:設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的;設(shè)計(jì)模式使代碼編制真正工程化;設(shè)計(jì)模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣。設(shè)計(jì)模式是一種抽象思想,它在對(duì)象的創(chuàng)建、組成以及行為等方面提供了一套精練的解決方案。分層架構(gòu)將某一應(yīng)用系統(tǒng)劃分成多個(gè)子任務(wù)組,每個(gè)

2、子任務(wù)組處于一個(gè)特定的抽象層次中。分析了傳統(tǒng)分層架構(gòu)存在的缺陷后,提出了將設(shè)計(jì)模式應(yīng)用到分層架構(gòu)中,解決了層與層之間以及各層內(nèi)部對(duì)象之間的高耦合問題,從而使架構(gòu)更加靈活,方便了系統(tǒng)的擴(kuò)充和維護(hù)。1.引言 層既是一種軟件體系結(jié)構(gòu)風(fēng)格,也是一種軟件體系結(jié)構(gòu)模式,它有助于將應(yīng)用系統(tǒng)分成子任務(wù)組,其中每個(gè)子任務(wù)組處于一個(gè)特定的抽象層次中。但是簡(jiǎn)單的層次劃分并沒有解決對(duì)象之間的高耦合問題。將設(shè)計(jì)模式引入到分層架構(gòu)中能夠使得各層的內(nèi)部組成之間以及層與層之間的耦合度大大降低,擴(kuò)展性大大提高,這樣既有利于將復(fù)雜問題分而治之,也有利于每一層更加靈活的進(jìn)行重用。分層體系架構(gòu)使整個(gè)系統(tǒng)各部件分離,解除了“一變?nèi)珓?dòng)”

3、的困擾。2.系統(tǒng)架構(gòu)與設(shè)計(jì)模式 如果說設(shè)計(jì)模式是微觀方面的內(nèi)容,那么架構(gòu)就可以說是宏觀方面的內(nèi)容。架構(gòu)描述了軟件體系基本的結(jié)構(gòu)化組織方案,提供了一套預(yù)先定義好的子系統(tǒng)來定制它們的職責(zé),包括用于它們之間的規(guī)則和指南。架構(gòu)的物理實(shí)現(xiàn)往往表現(xiàn)為一套詳細(xì)而準(zhǔn)確的類以及相關(guān)的配置文件,類與類之間功能各異,彼此調(diào)用,相互協(xié)作形成了對(duì)某一類重現(xiàn)問題的可重用、可擴(kuò)展的解決方案。通常情況下架構(gòu)是要針對(duì)特定平臺(tái)的,例如 MVC 在 SmallTalk 中的實(shí)現(xiàn)是一個(gè)架構(gòu),EJB是J2EE 下的一個(gè)架構(gòu),254JavaBean 也是 Java 平臺(tái)下的架構(gòu)。 在實(shí)際基于某種架構(gòu)的應(yīng)用中通常所做的工作是擴(kuò)展該架構(gòu)中的

4、子類以及組織架構(gòu)中類的實(shí)例。經(jīng)過大量的面向?qū)ο蟮钠髽I(yè)系統(tǒng)開發(fā)之后,就會(huì)發(fā)現(xiàn)不同的系統(tǒng)中會(huì)有大量相似結(jié)構(gòu)的出現(xiàn)。通常情況下這種相似結(jié)構(gòu)的解決方案也是相似的,而描述這種確定領(lǐng)域的相似需求和相似解決方案的工具便是設(shè)計(jì)模式。設(shè)計(jì)模式是系統(tǒng)設(shè)計(jì)師軟件開發(fā)經(jīng)驗(yàn)的總結(jié),設(shè)計(jì)模式相對(duì)于架構(gòu)更加抽象,架構(gòu)在不同的平臺(tái)下可能呈現(xiàn)出不同的表現(xiàn)形式,有時(shí)貌似不同的架構(gòu)可能完全出于同一種設(shè)計(jì)模式。一個(gè)架構(gòu)可以看作是由多個(gè)設(shè)計(jì)模式組合成的解決方案的物理實(shí)現(xiàn),設(shè)計(jì)模式指導(dǎo)如何實(shí)現(xiàn)這個(gè)方案。3.設(shè)計(jì)模式對(duì)分層架構(gòu)的優(yōu)化設(shè)計(jì)典型的企業(yè)分層系統(tǒng)架構(gòu)是將系統(tǒng)分為三層,即表示層、業(yè)務(wù)層、數(shù)據(jù)層。每層完成不同的工作,但它們之間又不是相

5、互獨(dú)立的,而需要彼此通信,相互協(xié)作完成整個(gè)架構(gòu)的功能。數(shù)據(jù)層向業(yè)務(wù)層提供底層數(shù)據(jù)的訪問處理功能;業(yè)務(wù)層向表示層提供業(yè)務(wù)流程控制和數(shù)據(jù)模型封裝功能,避免了表示層直接訪問數(shù)據(jù)層,使得表示與數(shù)據(jù)處理的完全分離。傳統(tǒng)的三層結(jié)構(gòu)的框架圖如圖 1 所示:圖1 典型的三層結(jié)構(gòu)圖 表示層是不能直接與數(shù)據(jù)層進(jìn)行通信的,而只能通過業(yè)務(wù)層與數(shù)據(jù)層進(jìn)行通信,在傳統(tǒng)的三層架構(gòu)中已經(jīng)做到了這一點(diǎn)。但是,從圖 1 不難看出傳統(tǒng)三層架構(gòu)存在的缺陷,在實(shí)際的企業(yè)系統(tǒng)中一項(xiàng)業(yè)務(wù)可能會(huì)涉及到多個(gè)數(shù)據(jù)操作,業(yè)務(wù)層與數(shù)據(jù)層的耦合度比較高,這勢(shì)必要求負(fù)責(zé)業(yè)務(wù)層的每個(gè)開發(fā)人員對(duì)數(shù)據(jù)層的所有接口必須非常熟悉,才能完成各種數(shù)據(jù)操作。這不僅對(duì)業(yè)

6、務(wù)層的開發(fā)人員提出了高要求,而且在每個(gè)業(yè)務(wù)類中會(huì)充斥著大量的數(shù)據(jù)層的類。這樣一來數(shù)據(jù)層中某個(gè)部分發(fā)生變動(dòng)可能會(huì)牽扯到多個(gè)業(yè)務(wù)層類的改動(dòng)。為解決這一問題我們引入 Command 模式,在業(yè)務(wù)層與數(shù)據(jù)層之間加入命令對(duì)象層,如圖 2 所示。圖2 加入命令對(duì)象層之后的模式框架 引入 Command 模式后,雖然實(shí)現(xiàn)了業(yè)務(wù)層與數(shù)據(jù)層之間的脫耦,但是架構(gòu)中仍存在缺陷。每個(gè)表示層對(duì)象都對(duì)應(yīng)著一個(gè)業(yè)務(wù)層對(duì)象,因此在系統(tǒng)中可能就存在大量的業(yè)務(wù)類,而這些業(yè)務(wù)類中可能有許多功能相似的部分,使得這些相似的功能普遍存在于大量的業(yè)務(wù)類中。如此設(shè)計(jì)的缺陷也就暴露出來,相似功能分別由不同人員重復(fù)開發(fā),一是造成了資源的浪費(fèi),更

7、主要的是給系統(tǒng)的維護(hù)和擴(kuò)充帶來極大的不便,如果某一業(yè)務(wù)功能需要擴(kuò)充或者變動(dòng),那么與此相關(guān)的所有業(yè)務(wù)類都要進(jìn)行改變。為了使表示層與業(yè)務(wù)層之間的聯(lián)系變得松散,我們引入 Façade(門面)模式,在這兩層之間加入一個(gè)門面對(duì)象層,如圖 3 所示。圖3 加入門對(duì)象層之后的模式框架如此一來便對(duì)表示層與業(yè)務(wù)層進(jìn)行了脫耦,當(dāng)某個(gè)業(yè)務(wù)發(fā)生變化時(shí),要么改變門面中的業(yè)務(wù)對(duì)象的組合要么對(duì)業(yè)務(wù)層中的業(yè)務(wù)類進(jìn)行修改,而不需要對(duì)調(diào)用該業(yè)務(wù)對(duì)象的所有表示層對(duì)象進(jìn)行修改。這也使得系統(tǒng)更容易擴(kuò)充,當(dāng)有新業(yè)務(wù)添加時(shí),我們只要把新的業(yè)務(wù)注冊(cè)到門面對(duì)象中,表示層就可以對(duì)其進(jìn)行透明訪問。4.設(shè)計(jì)模式在分層架構(gòu)中的實(shí)現(xiàn)上節(jié)中給出

8、了利用 Command 模式和 Façade 模式對(duì)分層體系架構(gòu)的優(yōu)化方案,在這節(jié)中將以設(shè)備管理系統(tǒng)為背景詳細(xì)闡述優(yōu)化之后的系統(tǒng)架構(gòu)的實(shí)現(xiàn)。設(shè)備管理系統(tǒng)包括設(shè)備的基礎(chǔ)信息管理、設(shè)備的申請(qǐng)管理、申請(qǐng)的審批管理等等業(yè)務(wù),其中設(shè)備的申請(qǐng)包括了設(shè)備的購置申請(qǐng)、調(diào)撥申請(qǐng)、報(bào)廢申請(qǐng)。圖 4 所示的是申請(qǐng)管理的類圖。圖 4 設(shè)備申請(qǐng)管理的類圖Command 模式涉及到三個(gè)角色,即命令發(fā)出者角色、命令角色和命令接收者角色。業(yè)務(wù)層對(duì)象充當(dāng)命令發(fā)出者角色,命令對(duì)象充當(dāng)命令角色,數(shù)據(jù)層對(duì)象充當(dāng)命令接受者角色。在每個(gè)命令對(duì)象中都持有命令接收者的引用,命令對(duì)象通過調(diào)用命令接收者中的具體方法來完成相應(yīng)的命令。例

9、如,新增一條設(shè)備購置申請(qǐng)信息包括合法性驗(yàn)證、添加記錄、登記日志三個(gè)操作,我們將這三個(gè)具體的操作組合成一個(gè)命令對(duì)象。因此命令對(duì)象PurchaseCommand 的命令接收者是 PurchaseDao、LogDao 和 ValidateDao。它向業(yè)務(wù)層提供的新增購置申請(qǐng)的命令執(zhí)行接口是 addApply,在接口中會(huì)執(zhí)行命令接收者的具體指令。示例 1 給出了設(shè)備購置申請(qǐng)管理的業(yè)務(wù)類PurchaseApply 和命令類 PurchaseCommand 的主要代碼框架。示例 1:public class PurchaseApplyPurchaseCommand command;public void

10、addApply()command.addApply();public class PurchaseCommand ValidateDao dao1;PurchaseDao dao2;LogDao dao3;public void addApply()dao1.validate();/執(zhí)行命令接收者 1 中的命令dao2.add();dao3.log();/執(zhí)行命令接收者 2 中的命令 為了向表示層提供統(tǒng)一的訪問業(yè)務(wù)層的接口,上面的設(shè)計(jì)方案中在表示層與業(yè)務(wù)層之間加入了一個(gè)門面層。表示層對(duì)象只要告訴門面所要完成的業(yè)務(wù)即可,而不必再關(guān)心操作具體是如何實(shí)現(xiàn)的。門面模式涉及到了三個(gè)角色,即訪問門面的客

11、戶角色、門面角色 、子系統(tǒng)角色。在上面設(shè)計(jì)方案中充當(dāng)三個(gè)角色的分別是表示層對(duì)象、門面對(duì)象、業(yè)務(wù)層對(duì)象。門面對(duì)象持有所有業(yè)務(wù)對(duì)象的引用,它會(huì)根據(jù)表示層的不同請(qǐng)求將不同的業(yè)務(wù)對(duì)象進(jìn)行組合來完成相應(yīng)的業(yè)務(wù)。示例 2 給出了門面對(duì)象的主要代碼框架。示例 2:public class Facadepublic void execute()switch(business)case “purchase”:if(operation.equals(“add”)PurchaseApply.addApply();if(operation.equals(“update”)break;case “exchange”:i

12、f(operation.equals(“add”)ExchangeApply.addApply();if(operation.equals(“update”)break;case “reject”:從門面對(duì)象的代碼可以看出,當(dāng)有新的業(yè)務(wù)添加到系統(tǒng)時(shí)所做的工作就是,編寫新業(yè)務(wù)類并在門面對(duì)象中進(jìn)行登記,然后再與相應(yīng)的其他業(yè)務(wù)進(jìn)行組合調(diào)用就可以滿足需求,而沒有對(duì)已有的業(yè)務(wù)類進(jìn)行大量修改。這樣就很輕松的實(shí)現(xiàn)了系統(tǒng)的擴(kuò)充。5.結(jié)論雖然分層會(huì)增加代碼程序的復(fù)雜性,但是使得整個(gè)系統(tǒng)的構(gòu)架更加清晰明了,更加易于理解。因?yàn)橄到y(tǒng)被嚴(yán)格地分層,如果某一天某個(gè)功能的業(yè)務(wù)邏輯發(fā)生變化,只要更新業(yè)務(wù)邏輯層就行,不需要驚動(dòng)其他層,同樣道理,如果其他層發(fā)生了變化的話,也不會(huì)影響其他層,使得系統(tǒng)穩(wěn)定性增加。系統(tǒng)的分層使得各部分各負(fù)其責(zé),避免了“一變?nèi)珓?dòng)”,也方便了開發(fā)人員的分工,發(fā)揮各自的長(zhǎng)處。將設(shè)計(jì)模式貫穿于整個(gè)架構(gòu)中,能使架構(gòu)的各部分更好地通信、更有效地協(xié)調(diào)工作。同時(shí)設(shè)計(jì)模式在各層中的應(yīng)用使得整個(gè)架構(gòu)更容易擴(kuò)充、更

溫馨提示

  • 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)論