我们正在关注域驱动设计以实现大型网站。如何避免使用域驱动设计创建超大型对象
但是通过将行为放在域对象上,我们最终得到了一些非常大的类。
例如在我们的WebsiteUser对象上,我们有很多很多的方法 - 例如,处理密码,订单历史记录,退款,客户细分。所有这些方法都与用户直接相关。许多这些方法在内部委托给其他子对象,但
这仍然导致一些非常大的类。
我很想避免暴露很多子对象 例如user.getOrderHistory()。getLatestOrder()。
还有哪些策略可以用来避免这个问题?
感谢您的评论。我读过埃文斯先生的书。我猜问题是一个实体有很多合作者。例如网站用户(或校长)具有最新的订单,第一订单,购物车,密码等。所有这些都与网站用户直接相关。 – Pablojim 2010-05-24 14:11:19
身份验证,挂单状态(即购物车)和订单历史确实是独立的关注点。考虑将身份验证拉出到IAuthenticationService中,并创建一个IOrderHistoryRepository(或者IOrderHistoryService)来封装给定用户的检索订单历史记录的行为。 – 2010-07-14 15:48:28