(原創)領域模型中貧血模型與充血模型的簡單區別

2021-10-04 00:09:24 字數 799 閱讀 6630

目錄

一、領域模型

二、區分

1.貧血模型

2.充血模型

領域模型(domain model)是對現實世界中物件的表示,又稱為領域物件模型、概念模型、業務實體,它通常都具有目標物件的特徵和行為,當多個領域模型結合在一起時,就可以完成各種業務邏輯,其實也是對現實世界中物件之間關聯關係的一種還原。

這裡主要理解領域模型中的兩種相對的模型:貧血模型、充血模型。

貧血模型指的是領域物件只包含了物件的特徵,而沒有物件的行為。即 pojo 中只有物件的屬性和屬性的 get/set 方法,所有的業務邏輯都放在業務層。

優點:各層次之間松耦合,結構清晰,領域物件只是用作存放和傳輸的載體。

缺點:只有屬性沒有行為的物件是沒有生命的,這樣的物件不是真正的物件,而且業務邏輯層將會十分龐大。

使用方式:在物件的外圍構建乙個 facade 層還封裝物件的某些原子操作,以此來簡化 service 層的壓力,但是要注意各個模組之間的松耦合,一旦緊耦合,就失去了使用貧血模型的本意。

充血模型是指模型中不僅包含了物件的屬性,還包含了物件的行為,包括業務邏輯、資料持久化等操作。業務層則只是部分的簡答呼叫邏輯、事務控制、許可權控制等。

優點:物件導向開發,業務層簡潔單一。

缺點:業務邏輯劃分難以明確,什麼樣的業務放在物件中,什麼樣的業務放在業務層。模組化開發更難,業務層的人需要深入了解領域層物件的行為方法。

使用方法:當進行複雜業務邏輯開發的時候,可以使用充血模型來簡化業務層,但是物件的行為方法一定要單一,盡量做好封裝。

(原創不易,**請註明出處!!)

領域模型 貧血模型 充血模型概念總結

領域模型 領域模型是對領域內的概念類或現實世界中物件的視覺化表示。又稱概念模型 領域物件模型 分析物件模型。它專注於分析問題領域本身,發掘重要的業務領域概念,並建立業務領域概念之間的關係。業務物件模型 也叫領域模型 domain model 是描述業務用例實現的物件模型。它是對業務角色和業務實體之間...

領域模型 貧血模型 充血模型概念總結

領域模型 領域模型是對領域內的概念類或現實世界中物件的視覺化表示。又稱概念模型 領域物件模型 分析物件模型。它專注於分析問題領域本身,發掘重要的業務領域概念,並建立業務領域概念之間的關係。業務物件模型 也叫領域模型 domain model 是描述業務用例實現的物件模型。它是對業務角色和業務實體之間...

DDD領域驅動設計 充血模型 貧血領域模型

最早廣泛應用源於ejb2,最強盛時期則是由spring創造,把 分離到不同的物件中 貧血領域模型是乙個存在已久的反模式,它不是個好東西。它完全和物件導向設計背道而馳。物件導向設計主張將資料和行為繫結在一起,而貧血領域模型則更像是一種面向過程設計。貧血領域模型的根本問題在於,它引入了領域模型設計的所有...