因此,作为一名电工和程序员,我认为我非常了解 FSM 设计模式。这是:
Nodes
, Node
都知道,当程序在这个节点时,要做什么,Node
contains references to another chosen nodes
,知道在什么条件下,他应该继续选择一个。 event
或 after processing
一个节点上,Node proceeds
到下一个选择的节点 我想,这对我来说很清楚。尽管最近,当我实现状态机时,有人告诉我,实际上它是经过了一些修改的责任链(不确定他是否正确),并且,我所做的/所做的是:
Nodes
集(不代表线性或树结构) 不幸的是,我担心由于法律问题,我不允许在此处粘贴类图。
另一方面,我们有责任链,我会(据我所知)以以下方式定义,即:
ItemToProcess
接口(interface),Node
接口(interface),ItemToProcess
并将处理过的一个转发给 nextNode
所以据我了解:
Chain Of Responsibility
,我们希望 每个 节点 StateMachine
来表示图 StateMachine
来执行计算, 的计算顺序或种类可能会因某些事件而异 。 我想请你确认我对这些设计模式的理解,或者告诉我我理解上的错误。
最佳答案
你的理解是正确的。
我想补充一点,FSM 中的节点是不同的状态。当您切换到其他节点时, 会更改状态 。您可以连续多次调用同一个状态/节点。
责任链没有不同的状态。正如您所说,链中的每个节点都尝试处理一个对象,如果一个节点成功处理了该对象,那么通常链会停止。
责任链的常见用途是查找用于确定用于给定输入(例如文件类型或扩展名)的 Handler 或在类路径或资源定位器中查找项目的查找。您可以将这些类型的操作视为:
[Node 1]
"-Do you know what this is?"
-No
[Node 2]
"-Do you know what this is?"
-No
[Node 3]
"-Do you know what this is?"
-Yes!
完毕
关于design-patterns - 责任链与有限状态机 - 差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33531587/