领域内的对象交互问题
比如User聚合根中存在这Address的引用(假定该Address是User聚合中的一个实体,而非值对象),此时命令处理器发出了"修改地址"的命令,那么在User聚合根中的changeAddress(Address newAddress)方法会被命令处理器调用,那在changeAddress方法体内就可以发出一个“内部领域事件”---AddressChangedEvent,且在User中存在这相应的handle(AddressChangedEvent event)方法来对该事件进行处理(及修改User对象的状态),此时问题就出现了:有两种方式进行处理:
1、直接调用Address中的另一个方法,来修改该Address的状态(直接使用引用)
2、发出一个事件,由Address来处理该事件,并改变Address的状态(事件机制)
第一种的意图就是聚合根处理自己的内部状态,如果是引用则直接调用其set方法修改其状态;第二种则是在聚合根的事件处理中再次发出事件,然后让引用对象自己处理,但会导致领域内的事件非常多,导致事件风暴
不知道这两种方式哪种比较好,欢迎讨论....
[该贴被wilsonp于2014-04-26 13:02修改过]