标签:
1.聚合是由实体和值对象组成,一个聚合有一个聚合根,聚合根是实体,并且是只读的实体,因为聚合的子实体是可以被临时传递到外部的,绕过聚合根修改了聚合内的东西,这样就无法确保聚合内的不变性了,我们要避免任何可能从外部修改聚合的行为发生,所有修改聚合的行为必须通过聚合根来实现。
2.聚合有不变性约束规则。
3.聚合的两条推荐准则:聚合不要设计的过大,过大的聚合很难确保不变性,从而很难确保数据的强一致性;聚合与聚合之间不要通过引用的方式来关联,而应该通过ID关联。
4.聚合内的非根的Entity以及Value Object之间不要相互引用,聚合内的所有Child可以对聚合根持有引用,如果一个子实体需要和另外一个子实体交互,则应该通过聚合根完成。
5.仓储应理解为一个在内存中维护一系列聚合根的集合,一个聚合根配备一个仓储。
6.仓储提供的接口应该总是接受聚合根或返回聚合根,不能返回聚合内的其他Entity或Value Object。
7.仓储提供的所有接口应该仅为领域模型使用;基本的仓储接口只需要三个:Add,Remove,GetById,其他可由业务需要而定。
8.如果一个操作仅由一个聚合根就可以完成,那么直接调用该聚合根完成即可
9.领域服务依赖仓储时,工厂依赖于领域服务或仓储时,都应该采用构造函数注入的方式,这样可以避免领域模型中不会出现DependencyResolver.Resolve<T>()这样的语句。
标签:
原文地址:http://www.cnblogs.com/ice-baili/p/4241643.html