女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DAO設(shè)計(jì)模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn)方法

電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2018-11-21 07:57 ? 次閱讀

1 引言

目前,在Internet/Intranet環(huán)境中,企業(yè)級(jí)的應(yīng)用軟件系統(tǒng)大多采用3層應(yīng)用框架:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層(圖1)。業(yè)務(wù)邏輯層代碼中混雜各種數(shù)據(jù)庫(kù)調(diào)用語(yǔ)句,嚴(yán)重影響系統(tǒng)的可擴(kuò)展性、可復(fù)用性和可維護(hù)性。采用設(shè)計(jì)模式可有效解決這些難點(diǎn),從而簡(jiǎn)單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。通過(guò)采用設(shè)計(jì)模式,能大大提高系統(tǒng)的可擴(kuò)展性、可重用性和可維護(hù)性,并能降低系統(tǒng)開(kāi)發(fā)難度,提高開(kāi)發(fā)效率。設(shè)計(jì)模式已成為當(dāng)前乃至今后軟件工程研究領(lǐng)域的一大熱點(diǎn),并被認(rèn)為是繼OOP技術(shù)之后的又一重大突破。充分考慮系統(tǒng)的可擴(kuò)展性,可復(fù)用性,可維護(hù)性,從軟件設(shè)計(jì)模式角度提出改進(jìn)方法,并給出研究實(shí)例。

DAO設(shè)計(jì)模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn)方法

2 設(shè)計(jì)模式

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

3 改進(jìn)的4層架構(gòu)開(kāi)發(fā)模型

基于上述分析,為提高軟件的開(kāi)發(fā)效率,這里從設(shè)計(jì)模式角度出發(fā),提出把業(yè)務(wù)邏輯層進(jìn)一步分出一層,單獨(dú)形成一個(gè)數(shù)據(jù)接口層。數(shù)據(jù)接口層屏蔽各種底層數(shù)據(jù)庫(kù)之間的差異,負(fù)責(zé)與底層數(shù)據(jù)庫(kù)之間的連接。形成4層軟件體系結(jié)構(gòu)框架,從上到下依次是:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)接口層、數(shù)據(jù)層,如圖2所示。表示層是應(yīng)用軟件進(jìn)行人機(jī)交互的接口;業(yè)務(wù)邏輯層負(fù)責(zé)處理用戶(hù)的業(yè)務(wù)請(qǐng)求;數(shù)據(jù)接口層負(fù)責(zé)與底層數(shù)據(jù)庫(kù)之間的交互;數(shù)據(jù)層則負(fù)責(zé)存儲(chǔ)數(shù)據(jù)。

3.1 DAO設(shè)計(jì)模式

業(yè)務(wù)對(duì)象只應(yīng)該關(guān)注業(yè)務(wù)邏輯,不應(yīng)該關(guān)心數(shù)據(jù)存取的細(xì)節(jié)。數(shù)據(jù)訪問(wèn)對(duì)象必須實(shí)現(xiàn)特定的持久化策略(如,基于JDBC或HIBERNATEH的持久化邏輯), 這樣就抽出來(lái)了DAO層,作為數(shù)據(jù)源層,而之上的Domain Model層與之通訊而已,如果將那些實(shí)現(xiàn)了數(shù)據(jù)訪問(wèn)操作的所有細(xì)節(jié)都放入高層Domain model(領(lǐng)域模型)的話,系統(tǒng)的結(jié)構(gòu)一定層次上來(lái)說(shuō)就變得有些混亂。低級(jí)別的數(shù)據(jù)訪問(wèn)邏輯與高級(jí)別的業(yè)務(wù)邏輯分離,用一個(gè)DAO接口隱藏持久化操作的 細(xì)節(jié),這樣使用的最終目的就是讓業(yè)務(wù)對(duì)象無(wú)需知道底層的持久化技術(shù)知識(shí),這是標(biāo)準(zhǔn) j2ee 設(shè)計(jì)模式之一。一個(gè)典型的的DAO組成:DAO工廠類(lèi),DAO接口,實(shí)現(xiàn)DAO接口的具體類(lèi)(每個(gè)DAO實(shí)例負(fù)責(zé)一個(gè)主要域?qū)ο蠡驅(qū)嶓w),VO(Value Object)。如果一個(gè)DAO工廠只為一個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)(現(xiàn)在只考慮這種情況)而創(chuàng)建很多的DAO的時(shí)候,實(shí)現(xiàn)該策略時(shí),我們考慮采用工廠方法設(shè)計(jì)模式。

DAO設(shè)計(jì)模式的優(yōu)點(diǎn):

(1)DAO模式抽象出數(shù)據(jù)訪問(wèn)方式,業(yè)務(wù)邏輯層訪問(wèn)數(shù)據(jù)源時(shí)完全感覺(jué)不到數(shù)據(jù)源的存在。軟件工廠中有一條很重要的法則:一個(gè)對(duì)象對(duì)其他對(duì)象的了解越少越好,了解越少就意味著依賴(lài)越少,可復(fù)用性越高。

(2)DAO將數(shù)據(jù)訪問(wèn)集中在獨(dú)立的一層,因?yàn)樗械臄?shù)據(jù)訪問(wèn)都由DAO代理,這層獨(dú)立的DAO將數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn)和系統(tǒng)的其余部分剝離,將數(shù)據(jù)訪問(wèn)集中,使得系統(tǒng)更具可維護(hù)性。

(3)DAO降低了業(yè)務(wù)邏輯層的復(fù)雜度。DAO管理復(fù)雜的數(shù)據(jù)訪問(wèn),從而簡(jiǎn)化了業(yè)務(wù)邏輯層。所有與數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn)有關(guān)的代碼都不寫(xiě)在業(yè)務(wù)邏輯層里,業(yè)務(wù)邏輯層可集中處理業(yè)務(wù)邏輯,提高了代碼的可讀性和生產(chǎn)率。

(4)DAO有助于提升系統(tǒng)的可移植性。DAO模式通過(guò)將數(shù)據(jù)訪問(wèn)劃分為抽象層和實(shí)現(xiàn)層,分離數(shù)據(jù)使用和數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn)細(xì)節(jié)。這意味著業(yè)務(wù)層與數(shù)據(jù)訪問(wèn)的底層細(xì)節(jié)無(wú)關(guān),也就是說(shuō),可以在保持上層機(jī)構(gòu)不變的情況下,通過(guò)切換底層實(shí)現(xiàn)來(lái)修改數(shù)據(jù)訪問(wèn)的具體機(jī)制,提高了系統(tǒng)的可復(fù)用性。

(5)DAO組件依賴(lài)于數(shù)據(jù)庫(kù)系統(tǒng),提供數(shù)據(jù)庫(kù)訪問(wèn)接口,只要數(shù)據(jù)庫(kù)沒(méi)有重構(gòu),DAO層通常無(wú)須改寫(xiě)。DAO層透明地分離數(shù)據(jù)庫(kù)與業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層專(zhuān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而無(wú)須關(guān)心持久層訪問(wèn)的實(shí)現(xiàn)。

(6)DAO模式的進(jìn)一步改良。由于DAO層已實(shí)現(xiàn)所有的數(shù)據(jù)訪問(wèn),業(yè)務(wù)邏輯層只需調(diào)用DAO接口,因此業(yè)務(wù)邏輯層要使用Facade模式包裝DAO。為實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)平臺(tái)移植,支持不同數(shù)據(jù)訪問(wèn)機(jī)制之間的可配置切換,需在DAO層引入Factorv模式、Proxy模式和Strategy模式,則可方便地在不同數(shù)據(jù)存儲(chǔ)方式間切換。然而,采用DAO模式,系統(tǒng)在請(qǐng)求數(shù)據(jù)端和數(shù)據(jù)服務(wù)端之間增加一層,增加了系統(tǒng)的復(fù)雜度;新增加的一層需要額外的設(shè)計(jì)與實(shí)現(xiàn),增加了工作量;還需引入工廠甚至抽象工廠,增加了設(shè)計(jì)的復(fù)雜度??偟膩?lái)說(shuō),DAO將數(shù)據(jù)持久層與業(yè)務(wù)邏輯層分離,提高了軟件的可擴(kuò)展性,可維護(hù)性和可復(fù)用性。

3.2 DAO實(shí)現(xiàn)

DAO對(duì)象也是。Java對(duì)象,只是它們提供數(shù)據(jù)庫(kù)訪問(wèn)的能力。數(shù)據(jù)庫(kù)的訪問(wèn)可歸納為創(chuàng)建(Create)、查詢(xún)(Read)、更新(Update)、刪除(Delete)4種基本操作,即常說(shuō)的CRUD操作。DAO模式通常與工廠模式一起使用,建議面向接口編程,為每個(gè)DAO實(shí)現(xiàn)類(lèi)編寫(xiě)接口,DAO調(diào)用者使用接口,而不是具體的實(shí)現(xiàn)類(lèi)。當(dāng)然,DAO對(duì)象需要值對(duì)象來(lái)傳值,值對(duì)象就是普通的JavaBean。以下是一個(gè)DAO的示例。圖3為數(shù)據(jù)訪問(wèn)對(duì)象設(shè)計(jì)模式的參與對(duì)象和它們之間的調(diào)用關(guān)系。圖4為該示例的詳細(xì)類(lèi)圖。

DAO設(shè)計(jì)模式的優(yōu)缺點(diǎn)及實(shí)現(xiàn)方法

該DAO示例包含文件:DAO接口類(lèi)、DAO接口實(shí)現(xiàn)類(lèi)、DaoFactory類(lèi)、PersonBean類(lèi)、DBConn類(lèi)、Test類(lèi)。接口里定義 DAO對(duì)象必須提供方法,PersonBean是一個(gè)普通的JavaBean,DAO對(duì)象的實(shí)現(xiàn)類(lèi)為接口的全部方法提供實(shí)現(xiàn)。程序中還用到工具類(lèi) DBConn,該工具類(lèi)主要用于獲得數(shù)據(jù)庫(kù)連接,通過(guò)連接獲得Statement對(duì)象,并提供釋放Statement對(duì)象、關(guān)閉連接的方法。

程序?qū)BConn對(duì)象設(shè)計(jì)成單態(tài)模式。至此,完整的DAO實(shí)例編寫(xiě)完成。程序主要提供3個(gè)組件:傳值的JavaBean類(lèi),DAO對(duì)象的接口,DAO對(duì)象的實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)類(lèi)包括所用的工具類(lèi)。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接口編程,無(wú)須關(guān)心DAO的具體實(shí)現(xiàn)。

4 結(jié)束語(yǔ)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5117

    瀏覽量

    88899
  • Internet
    +關(guān)注

    關(guān)注

    0

    文章

    400

    瀏覽量

    37224
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    滾動(dòng)模式和XY模式如何使用呢?各個(gè)模式有什么樣的優(yōu)缺點(diǎn)

    示波器觀察波形有三種視圖模式,分別是YT模式、滾動(dòng)模式、XY模式,雖然多數(shù)情況使用YT模式即可,但滾動(dòng)
    的頭像 發(fā)表于 10-16 09:12 ?1.5w次閱讀

    LED電源恒流驅(qū)動(dòng)與恒壓驅(qū)動(dòng)模式優(yōu)缺點(diǎn)

    ,各自也有相應(yīng)的優(yōu)勢(shì)和缺陷。本文今天將會(huì)就這兩種LED電源的驅(qū)動(dòng)模式來(lái)為各位工程師們進(jìn)行一次優(yōu)缺點(diǎn)盤(pán)點(diǎn)。 首先來(lái)看LED電源的恒壓驅(qū)動(dòng)模式,這種驅(qū)動(dòng)方式能夠在負(fù)載端對(duì)輸出電壓進(jìn)行采樣,線性穩(wěn)壓電源反饋回路
    發(fā)表于 10-09 14:18

    SASS和LESS等優(yōu)缺點(diǎn)對(duì)比及使用方法

    SASS和LESS等優(yōu)缺點(diǎn)對(duì)比,使用方法總結(jié) (筆記大全)
    發(fā)表于 05-21 14:09

    binlog有什么意義/工作模式/優(yōu)缺點(diǎn)

      Linux運(yùn)維是現(xiàn)下較為火熱的職業(yè)崗位之一。學(xué)習(xí)Linux技術(shù)的人越來(lái)越多。Linux運(yùn)維學(xué)習(xí)過(guò)程中,binlog有什么意義?binlog有哪些工作模式?都有哪些優(yōu)缺點(diǎn)?binlog有哪些企業(yè)
    發(fā)表于 01-29 17:24

    DSP的并行互連方法有哪些,其各自的優(yōu)缺點(diǎn)是什么?

    DSP的并行互連方法有哪些,其各自的優(yōu)缺點(diǎn)是什么?如何利用TMS320C6x的HPI組成多DSP互聯(lián)并行系統(tǒng)?如何利用ADSP2106x的Link口組成多DSP互連并行系統(tǒng)?
    發(fā)表于 04-08 06:41

    開(kāi)關(guān)模式電源的電流檢測(cè)方法優(yōu)缺點(diǎn)有哪些

    開(kāi)關(guān)模式電源的電流檢測(cè)技術(shù)有何優(yōu)點(diǎn)?開(kāi)關(guān)模式電源的電流檢測(cè)方法有哪幾種?分別有什么優(yōu)缺點(diǎn)?
    發(fā)表于 08-17 09:09

    步進(jìn)電機(jī)有哪些優(yōu)缺點(diǎn)?是什么工作原理?操作模式有哪些?

    步進(jìn)電機(jī)的特點(diǎn)是什么?有哪些優(yōu)缺點(diǎn)?步進(jìn)電機(jī)有哪些類(lèi)型?步進(jìn)電機(jī)是什么工作原理?步進(jìn)電機(jī)的操作模式有哪幾種?
    發(fā)表于 09-23 08:33

    什么是OFDM?有什么優(yōu)缺點(diǎn)

    什么是OFDM?有什么優(yōu)缺點(diǎn)?OFDM中降低PAPR的方法有哪些?
    發(fā)表于 10-09 07:41

    受限單極PWM模式有哪些優(yōu)缺點(diǎn)

    雙極PWM調(diào)制模式是什么意思?單極PWM調(diào)制模式是什么意思?受限單極PWM模式有哪些優(yōu)缺點(diǎn)?
    發(fā)表于 10-11 07:03

    什么是IoC?具有哪些優(yōu)缺點(diǎn)?

    什么是IoC?具有哪些優(yōu)缺點(diǎn)
    發(fā)表于 10-21 09:33

    LwIP的優(yōu)缺點(diǎn)是什么

    目錄2.1 LwIP 的優(yōu)缺點(diǎn)2.2 LwIP 的文件說(shuō)明2.2.1 如何獲取 LwIP 源碼文件2.2.2 LwIP 文件說(shuō)明2.3 使用 vscode 查看源碼2.3.1 查看文件中的符號(hào)列表
    發(fā)表于 01-20 06:25

    矩陣按鍵的掃描方法有何優(yōu)缺點(diǎn)

    矩陣按鍵需要用多少個(gè)單片機(jī)引腳進(jìn)行連接呢?矩陣按鍵的掃描方法有何優(yōu)缺點(diǎn)呢?具體怎樣去實(shí)現(xiàn)
    發(fā)表于 02-23 06:11

    電流模式開(kāi)關(guān)穩(wěn)壓器的優(yōu)缺點(diǎn)及應(yīng)用

    優(yōu)缺點(diǎn)。電流模式穩(wěn)壓器解析圖1顯示電流模式穩(wěn)壓器的基本工作原理。這里,不止將反饋電壓與內(nèi)部基準(zhǔn)電壓進(jìn)行比較,還將其與生成電源開(kāi)關(guān)所需的PWM信號(hào)所用的鋸齒形電壓斜坡進(jìn)行比較。在電壓模式
    發(fā)表于 10-09 10:18

    超級(jí)電容電池的優(yōu)缺點(diǎn)_自制超級(jí)電容電池的方法

    本文主要介紹了超級(jí)電容電池的優(yōu)缺點(diǎn)及制作方法。
    發(fā)表于 08-03 10:16 ?2.4w次閱讀
    超級(jí)電容電池的<b class='flag-5'>優(yōu)缺點(diǎn)</b>_自制超級(jí)電容電池的<b class='flag-5'>方法</b>

    反激變換器DCM與CCM模式優(yōu)缺點(diǎn)

    反激變換器DCM與CCM模式優(yōu)缺點(diǎn)(羅馬仕電源技術(shù)偏執(zhí)狂價(jià)格)-反激變換器DCM與CCM模式優(yōu)缺點(diǎn) ? ? ? ? ? ??
    發(fā)表于 08-31 15:18 ?78次下載
    反激變換器DCM與CCM<b class='flag-5'>模式</b>的<b class='flag-5'>優(yōu)缺點(diǎn)</b>