當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]1 引言 傳統(tǒng)軟件應(yīng)用系統(tǒng)一般采用3層應(yīng)用框架,業(yè)務(wù)邏輯層代碼中混雜各種數(shù)據(jù)庫調(diào)用語句,嚴(yán)重影響系統(tǒng)的可擴(kuò)展性、可復(fù)用性和可維護(hù)性。 設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖泻芏嚯y點(diǎn)。如找到相關(guān)對象;以適當(dāng)?shù)牧?

 引言
    傳統(tǒng)軟件應(yīng)用系統(tǒng)一般采用3層應(yīng)用框架,業(yè)務(wù)邏輯層代碼中混雜各種數(shù)據(jù)庫調(diào)用語句,嚴(yán)重影響系統(tǒng)的可擴(kuò)展性、可復(fù)用性和可維護(hù)性。
    設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖泻芏嚯y點(diǎn)。如找到相關(guān)對象;以適當(dāng)?shù)牧6葘⑵錃w類;定義類的接口和繼承層次,建立對象之間的基本關(guān)系;要對現(xiàn)在的問題有針對性,同時(shí)對將來的問題和需求也有足夠的通用性;避免重復(fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)等。
    采用設(shè)計(jì)模式可有效解決這些難點(diǎn),從而簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。通過采用設(shè)計(jì)模式,能大大提高系統(tǒng)的可擴(kuò)展性、可重用性和可維護(hù)性,并能降低系統(tǒng)開發(fā)難度,提高開發(fā)效率。設(shè)計(jì)模式已成為當(dāng)前乃至今后軟件工程研究領(lǐng)域的一大熱點(diǎn),并被認(rèn)為是繼OOP技術(shù)之后的又一重大突破。
    首先簡要介紹設(shè)計(jì)模式,然后分析傳統(tǒng)3層架構(gòu)開發(fā)模型的優(yōu)缺點(diǎn),充分考慮系統(tǒng)的可擴(kuò)展性,可復(fù)用性,可維護(hù)性,從軟件設(shè)計(jì)模式角度提出改進(jìn)方法,并給出研究實(shí)例。

2 設(shè)計(jì)模式
    每一個(gè)模式描述一個(gè)在不斷重復(fù)發(fā)生的問題,以及該問題解決方案的核心。這樣就能多次使用該方案而不必重復(fù)勞動(dòng)。設(shè)計(jì)模式是面向?qū)ο筌浖O(shè)計(jì)過程中記錄的知識(shí)和經(jīng)驗(yàn),用一系列類結(jié)構(gòu)和對象來具體描述其含義。設(shè)計(jì)模式通過復(fù)用面向?qū)ο笤O(shè)計(jì)的解決方案,從而更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu),將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會(huì)使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式可幫助設(shè)計(jì)者做出有利于系統(tǒng)復(fù)用選擇,避免損害系統(tǒng)復(fù)用性,通過提供一個(gè)顯式類和對象作用關(guān)系及它們之間潛在聯(lián)系說明規(guī)范,設(shè)計(jì)模式甚至能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維護(hù)的有效性。設(shè)計(jì)模式確定所包含的類和實(shí)例及其角色、協(xié)作方式、職責(zé)分配。通過刻畫部件靜態(tài)和動(dòng)態(tài)結(jié)構(gòu)及其之間的合作關(guān)系,設(shè)計(jì)模式成功應(yīng)用于解決商業(yè)數(shù)據(jù)處理、電子通信、圖形用戶界面、數(shù)據(jù)庫、分布式通信軟件等軟件構(gòu)造中。


3 傳統(tǒng)的3層架構(gòu)開發(fā)模型
    目前,在Internet/Intranet環(huán)境中,企業(yè)級的應(yīng)用軟件系統(tǒng)大多采用3層應(yīng)用框架:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層(圖1)。在這種層次結(jié)構(gòu)的軟件框架中。每層為其上一層提供服務(wù)(服務(wù)提供者),并作為其下一層的客戶(服務(wù)消費(fèi)者),內(nèi)部的層只對相鄰的層可見,從而構(gòu)成一個(gè)具有可移植性、可擴(kuò)充性的兼容平臺(tái)。

    但也存在顯著的缺點(diǎn):在開發(fā)多個(gè)應(yīng)用軟件系統(tǒng)的過程中,不同的應(yīng)用軟件系統(tǒng)之間耦合度不是很好;層與層之間代碼混亂;訪問數(shù)據(jù)庫的方式不同,如JDBC, Hibernate或JDO,因此,在各種數(shù)據(jù)庫之間移植就需修改很多地方,業(yè)務(wù)邏輯層也需跟著修改,不能采用一致的編程模型,系統(tǒng)的可復(fù)用性、可維護(hù)性不是很理想。

4 改進(jìn)的4層架構(gòu)開發(fā)模型
    基于上述分析,為提高軟件的開發(fā)效率,這里從設(shè)計(jì)模式角度出發(fā),提出把業(yè)務(wù)邏輯層進(jìn)一步分出一層,單獨(dú)形成一個(gè)數(shù)據(jù)接口層。數(shù)據(jù)接口層屏蔽各種底層數(shù)據(jù)庫之間的差異,負(fù)責(zé)與底層數(shù)據(jù)庫之間的連接。形成4層軟件體系結(jié)構(gòu)框架,從上到下依次是:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)接口層、數(shù)據(jù)層,如圖2所示。表示層是應(yīng)用軟件進(jìn)行人機(jī)交互的接口;業(yè)務(wù)邏輯層負(fù)責(zé)處理用戶的業(yè)務(wù)請求;數(shù)據(jù)接口層負(fù)責(zé)與底層數(shù)據(jù)庫之間的交互;數(shù)據(jù)層則負(fù)責(zé)存儲(chǔ)數(shù)據(jù)。
4.1 DAO設(shè)計(jì)模式
    數(shù)據(jù)接口層采用數(shù)據(jù)訪問對象DAO(Data Access Ob-iect)模式。該模式實(shí)際是Adapter模式和Bridge模式的混合體,DAO對象提供數(shù)據(jù)庫訪問的基本操作,如增加、刪除、修改、查詢等。 DAO層以面向?qū)ο蟮姆绞椒庋b數(shù)據(jù)庫操作。DAO組件完全專注于數(shù)據(jù)訪問實(shí)現(xiàn),業(yè)務(wù)層代碼無須關(guān)心底層數(shù)據(jù)庫訪問的實(shí)現(xiàn),從而降低了層之間的耦合。
    DAO設(shè)計(jì)模式的優(yōu)點(diǎn):
    (1)DAO模式抽象出數(shù)據(jù)訪問方式,業(yè)務(wù)邏輯層訪問數(shù)據(jù)源時(shí)完全感覺不到數(shù)據(jù)源的存在。軟件工廠中有一條很重要的法則:一個(gè)對象對其他對象的了解越少越好,了解越少就意味著依賴越少,可復(fù)用性越高。
    (2)DAO將數(shù)據(jù)訪問集中在獨(dú)立的一層,因?yàn)樗械臄?shù)據(jù)訪問都由DAO代理,這層獨(dú)立的DAO將數(shù)據(jù)訪問的實(shí)現(xiàn)和系統(tǒng)的其余部分剝離,將數(shù)據(jù)訪問集中,使得系統(tǒng)更具可維護(hù)性。
    (3)DAO降低了業(yè)務(wù)邏輯層的復(fù)雜度。DAO管理復(fù)雜的數(shù)據(jù)訪問,從而簡化了業(yè)務(wù)邏輯層。所有與數(shù)據(jù)訪問的實(shí)現(xiàn)有關(guān)的代碼(例如SOL語言等)都不寫在業(yè)務(wù)邏輯層里,業(yè)務(wù)邏輯層可集中處理業(yè)務(wù)邏輯,提高了代碼的可讀性和生產(chǎn)率。
    (4)DAO有助于提升系統(tǒng)的可移植性。DAO模式通過將數(shù)據(jù)訪問劃分為抽象層和實(shí)現(xiàn)層,分離數(shù)據(jù)使用和數(shù)據(jù)訪問的實(shí)現(xiàn)細(xì)節(jié)。這意味著業(yè)務(wù)層與數(shù)據(jù)訪問的底層細(xì)節(jié)無關(guān),也就是說,可以在保持上層機(jī)構(gòu)不變的情況下,通過切換底層實(shí)現(xiàn)來修改數(shù)據(jù)訪問的具體機(jī)制,提高了系統(tǒng)的可復(fù)用性。
    (5)DAO組件依賴于數(shù)據(jù)庫系統(tǒng),提供數(shù)據(jù)庫訪問接口,只要數(shù)據(jù)庫沒有重構(gòu),DAO層通常無須改寫。DAO層透明地分離數(shù)據(jù)庫與業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而無須關(guān)心持久層訪問的實(shí)現(xiàn)。
    (6)DAO模式的進(jìn)一步改良。由于DAO層已實(shí)現(xiàn)所有的數(shù)據(jù)訪問,業(yè)務(wù)邏輯層只需調(diào)用DAO接口,因此業(yè)務(wù)邏輯層要使用Facade模式包裝DAO。為實(shí)現(xiàn)跨數(shù)據(jù)庫平臺(tái)移植,支持不同數(shù)據(jù)訪問機(jī)制之間的可配置切換,需在DAO層引入Factorv模式、Proxy模式和Strategy模式,則可方便地在不同數(shù)據(jù)存儲(chǔ)方式間切換。然而,采用DAO模式,系統(tǒng)在請求數(shù)據(jù)端和數(shù)據(jù)服務(wù)端之間增加一層,增加了系統(tǒng)的復(fù)雜度;新增加的一層需要額外的設(shè)計(jì)與實(shí)現(xiàn),增加了工作量;還需引入工廠甚至抽象工廠,增加了設(shè)計(jì)的復(fù)雜度??偟膩碚f,DAO將數(shù)據(jù)持久層與業(yè)務(wù)邏輯層分離,提高了軟件的可擴(kuò)展性,可維護(hù)性和可復(fù)用性。
4.2 DAO實(shí)現(xiàn)
    DAO對象也是。Java對象,只是它們提供數(shù)據(jù)庫訪問的能力。數(shù)據(jù)庫的訪問可歸納為創(chuàng)建(Create)、查詢(Read)、更新(Update)、刪除(Delete)4種基本操作,即常說的CRUD操作。DAO模式通常與工廠模式一起使用,建議面向接口編程,為每個(gè)DAO實(shí)現(xiàn)類編寫接口,DAO調(diào)用者使用接口,而不是具體的實(shí)現(xiàn)類。當(dāng)然,DAO對象需要值對象來傳值,值對象就是普通的JavaBean。以下是一個(gè)DAO的示例。圖3為數(shù)據(jù)訪問對象設(shè)計(jì)模式的參與對象和它們之間的調(diào)用關(guān)系。圖4為該示例的詳細(xì)類圖。

    該DAO示例包含文件:DAO接口類、DAO接口實(shí)現(xiàn)類、DaoFactory類、PersonBean類、DBConn類、Test類。接口里定義 DAO對象必須提供方法,PersonBean是一個(gè)普通的JavaBean,DAO對象的實(shí)現(xiàn)類為接口的全部方法提供實(shí)現(xiàn)。程序中還用到工具類 DBConn,該工具類主要用于獲得數(shù)據(jù)庫連接,通過連接獲得Statement對象,并提供釋放Statement對象、關(guān)閉連接的方法。
    程序?qū)BConn對象設(shè)計(jì)成單態(tài)模式。至此,完整的DAO實(shí)例編寫完成。程序主要提供3個(gè)組件:傳值的JavaBean類,DAO對象的接口,DAO對象的實(shí)現(xiàn)類,實(shí)現(xiàn)類包括所用的工具類。DAO模式通常與工廠模式相結(jié)合,DAO工廠負(fù)責(zé)產(chǎn)生DAO實(shí)例。兩者結(jié)合可更好地實(shí)現(xiàn)業(yè)務(wù)組件與持久層組件的解耦。業(yè)務(wù)組件只需獲取DAO工廠實(shí)例,然后由DAO工廠實(shí)例負(fù)責(zé)產(chǎn)生DAO組件。業(yè)務(wù)組件則面向DAO接口編程,無須關(guān)心DAO的具體實(shí)現(xiàn)。

5 結(jié)束語
    分析傳統(tǒng)3層軟件體系結(jié)構(gòu)的優(yōu)缺點(diǎn),從軟件模式角度出發(fā),對其進(jìn)行改進(jìn),提出4層開發(fā)模型,提高了系統(tǒng)的可擴(kuò)展性、可復(fù)用性、可維護(hù)性,并給出一個(gè)具體應(yīng)用實(shí)例實(shí)現(xiàn)DAO設(shè)計(jì)模式。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉