2012-11-15 74 views
0

POCO類在域驅動設計中具有行爲,如Validate()方法,是真的嗎?域驅動設計(DDD)中的POCO

+2

域類(POCOs)當然應該包含相關的行爲。驗證方法是否屬於實體類(POCOs)是有爭議的。很多時候,最好讓實體始終有效。 – eulerfx

+1

這種方法是否會導致POCO具有依賴性? – Raymound

+2

依賴於什麼?這種方法迫使您在嘗試創建實體(POCO)之前確保您擁有有效的數據。例如,驗證可以在用戶界面中執行。 – eulerfx

回答

4

是,領域模型的領域驅動設計的類應該重點看行爲,如果這是你的意思。

+0

是的,謝謝。這種方法是否會導致POCO具有依賴性? – Raymound

+0

域模型中的類不應該與應用程序的其他模塊有任何依賴關係。 –

4

是 - 「實體」封裝了數據和對象的行爲 - 所以它不是一個普通的舊合同的對象不再,它是一個域對象。想起來

一種方法是想象沒有你的其他代碼可以看到該對象的屬性,所以他們不能做......

if (myDomainObject.Name != null) ... 

他們必須調用

if (myDomainObject.IsValid()) ... 

當你改變什麼使得它有效的規則,改變只需要在域對象做,你已經向外部泄露到使用它的代碼停止的邏輯。

2

不。他們沒有像Validate()這樣的方法。

DDD實體應始終處於有效狀態。這就是爲什麼我們在類上使用行爲(方法)而不是公共屬性設置器。

請問這種做法的原因有POCO的依賴?

否。通常情況下,一切都取決於DDD模型,而不是相反。