2011-12-30 24 views
0

我在UML(紙上)中快速定義了我的領域模型,並且在我開始測試驅出功能時,重構將我引向了在我的域中不表示概念的小類,但這些類很好地封裝了所需的責任。在DDD中添加無處不在的語言?

例如,我從一臺擁有許多許可證的機器(機器---> *許可證)開始。我從增加或減少列表中的相應許可證對象(即,許可證具有許可證類型和該類型許可證數目的計數器)的方法Add(licenseType)和remove(licenseType)開始。

機器有其他關聯和行爲,所以我創建了一個LicenseTypeManager,我現在有了Machine ---> 1 LicenseTypeManager ---> * License。

我有Machine作爲聚合根,LicenseTypeManager作爲Value對象,License作爲Value對象。

現在,LicenseTypeManager是我在重構時創建的,並且根本沒有提及,並且不是應用程序的無處不在的語言的一部分。它可以存在嗎?

換句話說,使用UL進行建模並找到可能有助於更清楚地解釋域的其他術語很好嗎?

此外,我開始認爲LicenseTypeManager可能是一個域服務,但後來我開始擔心我可能正在創建一個貧血模型(雖然模型中仍然有很多邏輯)。所以我的下一個問題是它應該是一個域服務還是應該保持它的位置?

JD

+0

(因此你通過引進「經理人」的尋求贖回)知識2截至目前。請告訴我爲什麼以及如何避免它被關閉? – 2011-12-30 20:42:12

+0

目前它有2個接近的選票:第一個關於「off topic」,第二個關於「非建設性」。另外 - DDD在「灰色地帶」。它非常抽象,站在現實世界問題和軟件工程之間。對於不熟悉DDD創意的人來說,問題可能聽起來像是荒謬的胡言亂語。 – 2012-01-03 12:09:16

回答

3

不要緊,是什麼原因導致通用語言的豐富。但重要的是它無處不在。

因此,如果您對域進行建模並找出可以簡化理解的新術語,那麼只要域專家瞭解它們,已經使用或開始使用它們就沒有任何問題。

想象一下,你正在賣車,對編程一無所知。
請問Car type manager對你有意義嗎?不太可能。它不應該生活在領域。

依我之見:
- 你不明白合計根實體和價值的區分對象
- 你缺乏的OOP in general