我的域對象在需要時可以使用工廠方法或工廠圖層嗎?我的域對象在需要時可以使用工廠方法或工廠圖層嗎?
我一直試圖讓客戶端代碼創建並注入依賴關係,無論它們存在於何處,但似乎並不總是正確的做法。在這裏的這個問題,例如Where to check for mandatory properties in a domain object?,用戶可以擁有許多寵物;沒有用戶,寵物就不能存在。
我一直在試圖創建一個寵物,然後將其添加到用戶的集合,但問題是,爲了創建寵物,我需要提供用戶(這打敗了具有User::addPet(ConcretePet)
方法的目的)。
我寧願做的是有一個User::addPet()
方法接受參數數組,然後使用工廠或工廠方法創建寵物。這是否合理?
編輯:另一種情況
這裏還有一個場景,我想我的域模型來訪問一家工廠。如果我的用戶需要他們擁有的每個Pet的許可證對象,那麼在User :: addPet(ConcretePet)方法中創建它是否合理?當然,我可以在服務層創建許可證,但這又意味着將業務邏輯從域中拿走!
嗨史文,我可以創建一個沒有寵物的用戶,沒問題。當我創建寵物時,我可以注入用戶,沒問題。事實上,我有一個可以做到這一點的服務層,沒有問題。但是這使我的領域模型真的很乏味。我可以在User對象上放置addPet(ConcretePet)方法,但它會做什麼?寵物已經附着在用戶身上,沒有什麼可以做的了。 –
如果沒有什麼可以做的,那麼你希望更多?除非有理由,否則你不應該做太多必要的事情。但我仍可能誤解你的問題。 – Sven
嗨,Sven,如果我讓服務層在向用戶添加寵物之後看起來服務層,我的域模型開始變得貧乏。如果領域模型應該反映現實世界,我想我需要一個用戶的addPet方法。 (否則我的域邏輯分佈在兩層)。 –