貧血模型or領域模型

貧血模型or領域模型

ID:33981451

大?。?85.50 KB

頁數:15頁

時間:2019-03-03

貧血模型or領域模型_第1頁
貧血模型or領域模型_第2頁
貧血模型or領域模型_第3頁
貧血模型or領域模型_第4頁
貧血模型or領域模型_第5頁
資源描述:

《貧血模型or領域模型》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、最近taowen同學連續(xù)發(fā)起了兩起關于貧血模型和領域模型的討論,引起了大家的廣泛熱烈的討論,但是討論(或者說是爭論)的結果到底怎樣,我想值得商榷。問題是大家對貧血模型和領域模型都有自己的看法,如果沒有對此達到概念上的共識,那么討論的結果應該可想而知,討論的收獲也是有的,至少知道了分歧的存在。為了使問題具有確定性,我想從一個簡單例子著手,用我對貧血模型和領域模型的概念來分別實現(xiàn)例子。至于我的理解對與否,大家可以做評判,至少有個可以評判的標準在這。一個例子我要舉的是一個銀行轉帳的例子,又是一個被用濫了的例子。但即使這個例子也不是自己想出來的,而是剽竊的<

2、nAction>>中的例子,原諒我可憐的想像力。當錢從一個帳戶轉到另一個帳戶時,轉帳的金額不能超過第一個帳戶的存款余額,余額總數不能變,錢只是從一個賬戶流向另一個帳戶,因此它們必須在一個事務內完成,每次事務成功完成都要記錄此次轉帳事務,這是所有的規(guī)則。??貧血模型我們首先用貧血模型來實現(xiàn)。所謂貧血模型就是模型對象之間存在完整的關聯(lián)(可能存在多余的關聯(lián)),但是對象除了get和set方外外幾乎就沒有其它的方法,整個對象充當的就是一個數據容器,用C語言的話來說就是一個結構體,所有的業(yè)務方法都在一個無狀態(tài)的Service類中實現(xiàn),Service類僅僅包含一些行為。這是Ja

3、vaWeb程序采用的最常用開發(fā)模型,你可能采用的就是這種方法,雖然可能不知道它有個“貧血模型”的稱號,這要多虧MartinFlower(這個家伙慣會發(fā)明術語!)。?包結構在討論具體的實現(xiàn)之前,我們先來看來貧血模型的包結構,以便對此有個大概的了解。?貧血模型的實現(xiàn)一般包括如下包:·dao:負責持久化邏輯·model:包含數據對象,是service操縱的對象·service:放置所有的服務類,其中包含了所有的業(yè)務邏輯·facade:提供對UI層訪問的入口代碼實現(xiàn)先看model包的兩個類,Account和TransferTransaction對象

4、,分別代表帳戶和一次轉賬事務。由于它們不包含業(yè)務邏輯,就是一個普通的JavaBean,下面的代碼省略了get和set方法。Java代碼1.public?class?Account?{??2.????private?String?accountId;??3.????private?BigDecimal?balance;??4.??5.????public?Account()?{}??6.????public?Account(String?accountId,?BigDecimal?balance)?{??7.????????this.accountId?=?acco

5、untId;??8.????????this.balance?=?balance;??9.????}??10.????//?getter?and?setter?....??11.??12.}??publicclassAccount{privateStringaccountId;privateBigDecimalbalance;publicAccount(){}publicAccount(StringaccountId,BigDecimalbalance){this.accountId=accountId;this.balance=balance;}//getter

6、andsetter....}?Java代碼1.public?class?TransferTransaction?{??2.????private?Date?timestamp;??3.????private?String?fromAccountId;??4.????private?String?toAccountId;??5.????private?BigDecimal?amount;????6.??7.????public?TransferTransaction()?{}??8.??9.????public?TransferTransaction(String?

7、fromAccountId,?String?toAccountId,?BigDecimal?amount,?Date?timestamp)?{??10.????????this.fromAccountId?=?fromAccountId;??11.????????this.toAccountId?=?toAccountId;??12.????????this.amount?=?amount;??13.????????this.timestamp?=?timestamp;??14.????}??15.??16.????//?getter?and?setter?...

8、.??17

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。