這裏是修真院後端小課堂,每篇分享文從java
【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】程序員
八個方面深度解析後端知識/技能,本篇分享的是:web
【什麼是貧血模型,什麼是充血模型?爲何咱們會強制要求使用貧血模型?】數據庫
你們好,我是IT修真院深圳分院第十三期學員王東東,一枚正直純潔善良的JAVA程序員。後端
今天給你們分享一下,修真院官網JAVA任務一,擴展思考中的知識點——什麼是貧血模型,什麼是充血模型?爲何咱們會強制要求使用貧血模型?。架構
1、背景介紹編碼
領域模型是對領域內的概念類或現實世界中對象的可視化表示。又稱概念模型、領域對象模型、分析對象模型。分爲四類:失血模型,貧血模型,充血模型,脹血模型。架構設計
2、知識剖析設計
1.什麼是貧血模型?視頻
貧血模型是指使用的領域對象中只有setter和getter方法(POJO),全部的業務邏輯都不包含在領域對象中而是放在業務邏輯層。
2.什麼是充血模型?
充血模型將大多數業務邏輯和持久化放在領域對象中,業務邏輯只是完成對業務邏輯的封裝、事務和權限等的處理。比較符合面向對象。
3、常見問題
爲何要強制使用貧血模型?
4、解決方案
系統的層次結構清楚,各層之間單向依賴。
耦合度低,方便後期的更新與維護。
設計簡單,底層模型穩定。
5、編碼實戰
6、擴展思考
貧血模型與充血模型的對比:
他們最大的不一樣就是如何劃分業務邏輯。
貧血模型實體類只有SET GET方法,邏輯基本在服務層實現,代碼集中在Service層。耦合性很小,方便團隊合做。
充血模型的實體類裏不但有狀態,還有行爲,即屬性和方法都有。它的Service層很薄,業務邏輯只是完成對業務邏輯的封裝、事務和權限等的處理。對我的技術水平要求較高。
注:本人初學java者,若有不對敬請指出,謝謝!
7、參考文獻
百度百科、博客園、CSDN
八.更多討論
1.貧血模型裏沒有實現方法,那它的增刪改查是在哪實現的?
貧血模型須要玻璃處DB層專門用於數據庫操做。
2.貧血模型有什麼缺點?
邏輯集中在Service層,致使Service太過厚重。
3.典型的WEB應用中使用貧血模型,仍是充血模型?爲何?
使用貧血模型
典型的web應用中,簡單的CRUD操做佔據了業務邏輯的絕大多數比例,能夠避免了業務邏輯不得不大量封裝DAO接口的問題,簡化了軟件架構設計,節省了大量的業務層代碼量。
(1)它是基於組件技術的。所有的應用對象,不管控制器和視圖,仍是業務對象之類的都是 java組件.而且和Spring提供的其餘基礎結構緊密集成.
(2)
不依賴於Servlet API(目標雖是如此,可是在實現的時候確實是依賴於Servlet的)
(3)能夠任意使用各類視圖技術,而不單單侷限於JSP
(4) 支持各類請求資源的映射策略
(5)它應是易於擴展的
今天的分享就到這裏啦,歡迎你們點贊、轉發、留言、拍磚~