2015-07-19 95 views
1

根據域驅動設計,我可以從外部來源導入和重用常見的價值對象,如電子郵件,社會安全號碼,貨幣等?我可以重用值對象嗎?

看起來它會很糟糕,因爲我依賴外部代碼在我的域的核心,但另一方面,似乎我會通過一遍又一遍地重寫相同的代碼重新發明輪子。

+1

繼承是獲得代碼重用而不必重用域概念的絕佳方式。因此,您可以在您的域外部擁有一個Email對象,但在其中創建一個有意義的子類 - 例如UsersEmailAddress。 –

回答

4

那麼...通用的東西,如電子郵件,SSN可以導入和重用。基本上,進口產品的問題在於,它們可能意味着其他原始有限背景下的東西。例如,貨幣可能不是您所需的域名。但是像電子郵件這樣的東西足夠通用而不重要。

tldr;只要通用概念足夠通用,並且它們在您的域中具有相同的含義,就可以重用。

P.S:您可以重複使用它們來驗證輸入,即在域之外。

1

我認爲最好使用自己的值對象;在共同的圖書館中實施。

然後在你的值對象中,你可以派發驗證和規則檢查到你提到的外部資源;要自己做。

即使你可以在他們上面添加自己的驗證規則。例如,您可以在名爲「CompanyEmail」的類中放置一封電子郵件規則,該規則禁止來自常見電子郵件提供商(如Gmail,Hotmail等)的電子郵件。

相關問題