设计一个聚合,一定要保持聚合时刻处于一致性状态;从聚合出生(从repository中取出或创建)开始,聚合的属性在客户看来都是完整的,客户可以随时安全的调用聚合内的全部公开方法,调用前后聚合依然保持一致性,可以继续提供安全的服务;如果有些方法在聚合内不能保持安全调用,比如要求客户先进行某些操作(例如解密),然后才能进行某些操作,那么可以考虑把方法在领域服务中实现。
为什么聚合要求先调用某些前置服务就是不一致的?因为这就说明,如果客户不先调用某个前置操作,直接调用该服务就会出现不可期的结果或异常,那么调用前置操作之前,聚合的该服务处于不可用状态,也就是不一致的状态。
总结:聚合提供了一致性的边界。
扩展知识:聚合可以提供一些工厂方法,通过控制创建过程来把控一致性边界,保证从创建完成后就处于一致性状态。