《企業(yè)應(yīng)用架構(gòu)模式》之事務(wù)腳本、表模塊、領(lǐng)域模型

大師之所以稱之為大師,就是因為站的高度跟普通人不一樣。

Martin Fowler在《企業(yè)應(yīng)用架構(gòu)模式》中將企業(yè)應(yīng)用的模式分為三種:事務(wù)腳本、表模塊、領(lǐng)域模型,這三種模式是對應(yīng)用程序開發(fā)方式的高度抽象。

因為大師的思維高度,加之翻譯成中文之后的蹩腳名詞,很久才對這三種模式有了一些認(rèn)識,本文講講個人的理解,不對之處請您指正。

一、事務(wù)腳本

首先這種模式,從字面上來看上事務(wù)驅(qū)動的,而且上通過腳本來實現(xiàn)的。對于剛剛開始程序開發(fā)的新手來說,這種模式上最被常用的,因為它最簡單,最容易理解。

例如:做一個查詢的小程序,那么首先會考慮用戶輸入查詢值,點(diǎn)擊查詢按鈕,然后程序通過SQL語句到數(shù)據(jù)庫查詢,查詢返回結(jié)果到界面顯示。這樣一個用例通過線性的腳本來思考,實現(xiàn)時也通過這流程進(jìn)行。

二、表模塊

這種模式比較看重數(shù)據(jù)庫,先考慮好有哪些數(shù)據(jù)要管理,然后設(shè)計好數(shù)據(jù)庫表,剩下的就是增刪改查的代碼和界面了。

例如:做一個選課系統(tǒng),首先考慮要有課堂、課程、教師、學(xué)生、教師與課堂關(guān)系、學(xué)生選課信息等等這些數(shù)據(jù),然后設(shè)計出數(shù)據(jù)庫表,再實現(xiàn)對這些數(shù)據(jù)庫表增刪改查的界面和數(shù)據(jù)庫訪問代碼。

三、領(lǐng)域模型

這種模式上最符合面向?qū)ο蟮模瑥念I(lǐng)域?qū)樱I(yè)務(wù)層)入手考慮,將領(lǐng)域模型抽象,建立Class,然后再考慮數(shù)據(jù)庫如何保存,UI如何設(shè)計。

例如:上述選課系統(tǒng),不是先考慮數(shù)據(jù)庫,而是各領(lǐng)域?qū)ο髸心男?,通過類的關(guān)系來表示業(yè)務(wù)對象之間的關(guān)系,例如課堂類會有教師屬性、所選課學(xué)生列表對象等。

事務(wù)腳本模式上最容易理解的,軟件開發(fā)入門者就是這樣的思路,實現(xiàn)最容易,但是最經(jīng)不起需求的變化。

表模塊模式上.NET幫派最喜歡的模式,微軟推崇的DataSet、DataTable從UI一直貫穿到DB,感覺在UI上操作數(shù)據(jù)庫表一樣,超級簡單,甚至有些控件直接綁定,代碼不需要自己寫多少,VS IDE和控件幫開發(fā)者搞定了,但是其實這樣會把程序員“慣壞了”,雖然開發(fā)容易,但是對原理不夠理解,對面向?qū)ο蟮乃枷敫鼰o法深入了解。雖然本人也上.NET幫派,但是一直認(rèn)為需要向Java陣營學(xué)習(xí)的東西太多了。個人以為要理解面向?qū)ο螅M量遠(yuǎn)離DataTable。

對于企業(yè)應(yīng)用中最有價值的就是業(yè)務(wù)領(lǐng)域?qū)?,技術(shù)實現(xiàn)上最多就是數(shù)據(jù)庫的增刪改查和UI,它的特點(diǎn)明顯與其他類型的軟件開發(fā),如系統(tǒng)應(yīng)用、多媒體、游戲等不同。業(yè)務(wù)的地位尤其重要,表現(xiàn)在業(yè)務(wù)復(fù)雜性、多變性兩個方面,而面向?qū)ο蟮拈_發(fā)思想正式應(yīng)對這類問題的,抽象、復(fù)用、適應(yīng)變化等特點(diǎn)在處理起這種復(fù)雜業(yè)務(wù)的應(yīng)用系統(tǒng)時相比其他模式更加便利。

對于三種模式,個人認(rèn)為適用于不同規(guī)模的應(yīng)用開發(fā),簡單的小程序可以考慮事務(wù)腳本模式將會節(jié)省設(shè)計的工作量,對于業(yè)務(wù)規(guī)模不大、領(lǐng)域邏輯變化不大的應(yīng)用可使用表模塊、而對于業(yè)務(wù)復(fù)雜、需求多面的應(yīng)用建議使用更加面向?qū)ο蟮念I(lǐng)域模型進(jìn)行設(shè)計。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,311評論 2 89
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,145評論 25 708
  • 裁下一方月光柔柔的,披在肩上如青絲般順滑如銀河般緩緩流淌 那是夜的皎潔皎潔是撩人的霓裳怕看她的明眸只想窩進(jìn)她的心房...
    后來居士閱讀 357評論 1 6
  • 接了節(jié)幼兒園的瑜伽課,是給一個幼兒園員工上課,有幼兒老師、有保潔阿姨、有員工,但是有一點(diǎn)是沒有專業(yè)的瑜伽準(zhǔn)備,沒有...
    夢小柳閱讀 312評論 3 0
  • 朱砂又稱辰砂、丹砂、赤丹、汞沙,是硫化汞(化學(xué)品名稱:HgS)的天然礦石,大紅色,有金剛光澤至金屬光澤。據(jù)《本草綱...
    文書蜀閱讀 1,303評論 2 1

友情鏈接更多精彩內(nèi)容