清洁嵌套状态机的模式/习语?

时间:2014-06-03 22:24:31

标签: ruby oop design-patterns state-machine

我试图找出一个很好的干净ruby / oo方法来解决嵌套状态机的问题。

我正在建立一个接受订单的系统。订单是作为状态机实现的,流量会有各种变化,具体取决于它是住宅/商业,qc / no-qc,国外/国内。

我想以一种很好的方式设计它。每个选项组合都有自己的工作流程的新类可以使用,但非常不干,并且可以通过其他选项快速分支。

我试图弄清楚是否有办法通过合成来构建它,其中订单会根据前面提到的住宅/商业/等推迟/委托到每个分支的相应子工作流状态然后在完成后返回主要订单流程。

似乎没有一种方法可以使用我正在使用的工作流程宝石,而且我所看到的其他状态机实现都没有支持它。

是否有一种非常红宝石的方法可以让我根据内部状态进行委派?是否有一般的OO模式可能在这里运作良好?我接近这个奇怪的方式吗?

1 个答案:

答案 0 :(得分:-1)

因为Ruby与Python非常相似,所以你可以看一下使用状态模式的python implementation of a nested state machine。状态机(消息处理程序)基于单个事件“源”(消息类型)更改其超状态(在服务/停止服务中)和继承状态(活动,备用/可疑,失败)。 python实现是C ++示例的一个端口。您可以找到C ++示例here的类图和说明。