設計模式在業(yè)務邏輯層中的應用
傳統(tǒng)軟件應用系統(tǒng)一般采用3層應用框架,業(yè)務邏輯層代碼中混雜各種數(shù)據(jù)庫調(diào)用語句,嚴重影響系統(tǒng)的可擴展性、可復用性和可維護性。
設計可復用的面向?qū)ο筌浖泻芏嚯y點。如找到相關對象;以適當?shù)牧6葘⑵錃w類;定義類的接口和繼承層次,建立對象之間的基本關系;要對現(xiàn)在的問題有針對性,同時對將來的問題和需求也有足夠的通用性;避免重復設計或盡可能少做重復設計等。
采用設計模式可有效解決這些難點,從而簡單方便地復用成功的設計和體系結(jié)構(gòu)。通過采用設計模式,能大大提高系統(tǒng)的可擴展性、可重用性和可維護性,并能降低系統(tǒng)開發(fā)難度,提高開發(fā)效率。設計模式已成為當前乃至今后軟件工程研究領域的一大熱點,并被認為是繼OOP技術之后的又一重大突破。
首先簡要介紹設計模式,然后分析傳統(tǒng)3層架構(gòu)開發(fā)模型的優(yōu)缺點,充分考慮系統(tǒng)的可擴展性,可復用性,可維護性,從軟件設計模式角度提出改進方法,并給出研究實例。
2 設計模式
每一個模式描述一個在不斷重復發(fā)生的問題,以及該問題解決方案的核心。這樣就能多次使用該方案而不必重復勞動。設計模式是面向?qū)ο筌浖O計過程中記錄的知識和經(jīng)驗,用一系列類結(jié)構(gòu)和對象來具體描述其含義。設計模式通過復用面向?qū)ο笤O計的解決方案,從而更加簡單方便地復用成功的設計和體系結(jié)構(gòu),將已證實的技術表述成設計模式也會使新系統(tǒng)開發(fā)者更加容易理解其設計思路。設計模式可幫助設計者做出有利于系統(tǒng)復用選擇,避免損害系統(tǒng)復用性,通過提供一個顯式類和對象作用關系及它們之間潛在聯(lián)系說明規(guī)范,設計模式甚至能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維護的有效性。設計模式確定所包含的類和實例及其角色、協(xié)作方式、職責分配。通過刻畫部件靜態(tài)和動態(tài)結(jié)構(gòu)及其之間的合作關系,設計模式成功應用于解決商業(yè)數(shù)據(jù)處理、電子通信、圖形用戶界面、數(shù)據(jù)庫、分布式通信軟件等軟件構(gòu)造中。
3 傳統(tǒng)的3層架構(gòu)開發(fā)模型
目前,在Internet/Intranet環(huán)境中,企業(yè)級的應用軟件系統(tǒng)大多采用3層應用框架:表示層、業(yè)務邏輯層和數(shù)據(jù)層(圖1)。在這種層次結(jié)構(gòu)的軟件框架中。每層為其上一層提供服務(服務提供者),并作為其下一層的客戶(服務消費者),內(nèi)部的層只對相鄰的層可見,從而構(gòu)成一個具有可移植性、可擴充性的兼容平臺。
本文引用地址:http://m.butianyuan.cn/article/261221.htm
但也存在顯著的缺點:在開發(fā)多個應用軟件系統(tǒng)的過程中,不同的應用軟件系統(tǒng)之間耦合度不是很好;層與層之間代碼混亂;訪問數(shù)據(jù)庫的方式不同,如JDBC, Hibernate或JDO,因此,在各種數(shù)據(jù)庫之間移植就需修改很多地方,業(yè)務邏輯層也需跟著修改,不能采用一致的編程模型,系統(tǒng)的可復用性、可維護性不是很理想。
4 改進的4層架構(gòu)開發(fā)模型
基于上述分析,為提高軟件的開發(fā)效率,這里從設計模式角度出發(fā),提出把業(yè)務邏輯層進一步分出一層,單獨形成一個數(shù)據(jù)接口層。數(shù)據(jù)接口層屏蔽各種底層數(shù)據(jù)庫之間的差異,負責與底層數(shù)據(jù)庫之間的連接。形成4層軟件體系結(jié)構(gòu)框架,從上到下依次是:表示層、業(yè)務邏輯層、數(shù)據(jù)接口層、數(shù)據(jù)層,如圖2所示。表示層是應用軟件進行人機交互的接口;業(yè)務邏輯層負責處理用戶的業(yè)務請求;數(shù)據(jù)接口層負責與底層數(shù)據(jù)庫之間的交互;數(shù)據(jù)層則負責存儲數(shù)據(jù)。
4.1 DAO設計模式
數(shù)據(jù)接口層采用數(shù)據(jù)訪問對象DAO(Data Access Ob-iect)模式。該模式實際是Adapter模式和Bridge模式的混合體,DAO對象提供數(shù)據(jù)庫訪問的基本操作,如增加、刪除、修改、查詢等。 DAO層以面向?qū)ο蟮姆绞椒庋b數(shù)據(jù)庫操作。DAO組件完全專注于數(shù)據(jù)訪問實現(xiàn),業(yè)務層代碼無須關心底層數(shù)據(jù)庫訪問的實現(xiàn),從而降低了層之間的耦合。
DAO設計模式的優(yōu)點:
(1)DAO模式抽象出數(shù)據(jù)訪問方式,業(yè)務邏輯層訪問數(shù)據(jù)源時完全感覺不到數(shù)據(jù)源的存在。軟件工廠中有一條很重要的法則:一個對象對其他對象的了解越少越好,了解越少就意味著依賴越少,可復用性越高。
(2)DAO將數(shù)據(jù)訪問集中在獨立的一層,因為所有的數(shù)據(jù)訪問都由DAO代理,這層獨立的DAO將數(shù)據(jù)訪問的實現(xiàn)和系統(tǒng)的其余部分剝離,將數(shù)據(jù)訪問集中,使得系統(tǒng)更具可維護性。
(3)DAO降低了業(yè)務邏輯層的復雜度。DAO管理復雜的數(shù)據(jù)訪問,從而簡化了業(yè)務邏輯層。所有與數(shù)據(jù)訪問的實現(xiàn)有關的代碼(例如SOL語言等)都不寫在業(yè)務邏輯層里,業(yè)務邏輯層可集中處理業(yè)務邏輯,提高了代碼的可讀性和生產(chǎn)率。
評論