我们有一个域对象(比如一个平面)和业务流(stateMachine对象)。在一个事件(失败)我们想要将状态从飞行变为下降。并且不知道什么是建模它的最佳方式。
我不想制作方法plane.setState()
,因为它应该是平面的内部状态
其他选项是使用spring @Configurable将stateMachine注入平面并创建方法plane.failure()
但它需要一个jvm代理,它可能不适用于eclipse和单元测试
第三个选项是让方法plane.failure(stateMachine)
看起来很丑,但似乎有用
还有其他想法吗?
答案 0 :(得分:0)
如果您不想通过State
方法在外部公开对象的setState()
,那么您需要通过假设{{1}以某种方式将Event
传达给它} 方法。从那时起,根据发生的事件设置自己的 State 对象的内部事务。据推测, State 和 Event 都是某种枚举,而 State 枚举是在域对象内部定义的。我甚至会考虑在中间抽象类中提取 State 枚举逻辑和转换。