原諒標題,它比聽起來簡單。實體的更新應該由實體本身還是服務類來處理?
我有一個類,StickerBook
。它包含一些貼紙,List<Sticker>
。
當是時候查看是否有任何貼紙等待添加,應該StickerBook.CheckForNewStickers()
處理查找它們然後添加它們的邏輯,或者應該檢查一個新類,然後將它們添加到StickerBook?
一個非常基本的概念,我知道,我不能換我的頭周圍。
原諒標題,它比聽起來簡單。實體的更新應該由實體本身還是服務類來處理?
我有一個類,StickerBook
。它包含一些貼紙,List<Sticker>
。
當是時候查看是否有任何貼紙等待添加,應該StickerBook.CheckForNewStickers()
處理查找它們然後添加它們的邏輯,或者應該檢查一個新類,然後將它們添加到StickerBook?
一個非常基本的概念,我知道,我不能換我的頭周圍。
相當肯定有沒有正確或錯誤的答案。無論哪種方式,你似乎都在封裝邏輯,而不是讓類的內部(List)對所有人開放,這通常是件好事。
把邏輯到一個單獨的服務類(並且具有該類實現的界面)可以使單元測試更容易如果然後通過此接口件等代碼作爲依賴關係。我認爲在模擬一個服務類並在測試期間傳遞實際簡單實體在概念上更容易,而不是模擬具有複雜邏輯的實體。
嗯,這取決於什麼是你對構建對象的代碼和建模的一般方法。也就是說,單一責任原則規定對象應該只有一個存在的理由,所以我會贊成將NewStickerChecker作爲一個類。
沒有黑色和白色,這可能是主觀的,根據我的經驗,如果有一個包含子實體集合的實體,就像您的情況,本書包含一個貼紙列表,您可以將它們加載到內部該實體。
畢竟OOP定義了類包含以操縱該數據;-)
P.S.所需的數據和邏輯正如聲明,您在業務實體的精神講的實體,而不是在實體框架光(......不在於它會改變太多,但無論如何只是問題的標記)。