我想了解领域驱动设计的基础知识。昨天我在一个项目中发现了一些代码,Repository返回了一个实体列表,即List getMessages(),其中Message是一个实体(有自己的id并且是可修改的)。现在,在阅读关于DDD中的存储库时,他们非常具体地指出存储库应该返回聚合根,并且聚合上的任何操作都应该通过调用聚合根中的方法来完成。DDD是否允许列表为聚合根?
我想将List放在自己的类中,然后返回该类。但是,在我的项目中,除了符合DDD外,基本上不需要这样做,因为我们只显示消息,添加新消息或删除现有消息。我们永远不会删除所有消息,所以我们唯一的方法是,addMessage(...)
,getMessages()
,updateMessage(...)
和removeMessage(...)
这基本上是我们的域服务正在做的。
任何想法的人?在描述聚集和存储库时,DDD的最佳实践是什么?
当然,Repository不应该返回Aggregate Root,它应该总是只返回一个引用,指向默认的Aggregate Root。但谢谢你的回复,它确实有帮助。现在我已经买了埃里克埃文斯的书,所以我会做一些进一步的研究。 – 2011-02-22 08:40:13