我們正在關注域驅動設計以實現大型網站。如何避免使用域驅動設計創建超大型對象
但是通過將行爲放在域對象上,我們最終得到了一些非常大的類。
例如在我們的WebsiteUser對象上,我們有很多很多的方法 - 例如,處理密碼,訂單歷史記錄,退款,客戶細分。所有這些方法都與用戶直接相關。許多這些方法在內部委託給其他子對象,但
這仍然導致一些非常大的類。
我很想避免暴露很多子對象 例如user.getOrderHistory()。getLatestOrder()。
還有哪些策略可以用來避免這個問題?
感謝您的評論。我讀過埃文斯先生的書。我猜問題是一個實體有很多合作者。例如網站用戶(或校長)具有最新的訂單,第一訂單,購物車,密碼等。所有這些都與網站用戶直接相關。 – Pablojim 2010-05-24 14:11:19
身份驗證,掛單狀態(即購物車)和訂單歷史確實是獨立的關注點。考慮將身份驗證拉出到IAuthenticationService中,並創建一個IOrderHistoryRepository(或者IOrderHistoryService)來封裝給定用戶的檢索訂單歷史記錄的行爲。 – 2010-07-14 15:48:28