关于JF框架中Domain events的一个“缺失”
实话说,banq的JF中的Domain events模型是非常不错的,能够让领域模型和其它层的交互隔离开来,并为提升性能提出了一条解决方案。
但同时,“JF中的Domain events模型”的有一个对我来说非常大的缺失,没有提供领域内部的事件交互。应该说,JF的案例jivejdon的逻辑还比较简单,也就说领域模型内的对象间交互逻辑比较简单。我不太赞同“领域模型内部对象交互逻辑采取直接调用”的方式。因为我面临的业务是要做产品,经常遇到一个领域模型要应对不同用户场景的问题,打一个比喻:一个领域模型就像一个分子,这个分子内部包含一些原子;而不同业务场景就像一个外界刺激作用到这个分子上,这会造成原子间的连锁反应;对于这些不同场景,这些原子间的反应路径有相同的又有不同的。经过实践,我发现只能用事件才能真正解决这个问题,我称之为“事件路由”。当时我用的基于.net的spring.net,它有一个spring所没有的事件注入的功能,可以灵活地支撑对象间的事件交互。当然,spring.net的事件注入和JF的各有所长。不过我真心希望banq能在JF中加入这个功能,就JF而言@Send中可以加入@Model参数及其响应方法。另外,“事件路由”的业务场景非常复杂,一个事件可以有多个观察者,JF中可以定义多个@Send.
呵呵,有什么不对,希望banq指正。