【发布时间】:2015-05-06 11:29:46
【问题描述】:
我与具有自己协议的设备进行串行通信,换句话说,它具有一些具有某些含义的字节数组(帧)。因此,我一直在使用映射中的许多默认帧来处理它,以将数据发送到设备和一种状态机,一个用于从设备接收数据的大型 switch-case 块。
我知道这个问题是主观的,但我真的很想获得实施这种关系的最佳实践。也许有设计模式可以做同样的事情。
【问题讨论】:
-
状态机是 M2M 通信 (IMHO) 中的首选方法,如果机器不会变得太大,switch 语句是一种可行的方法。如果它确实或需要更大的灵活性,您可能想要使用可配置的自动机框架或自己编写一个。但是您的问题非常广泛,我认为应该重新措辞并提供一些来源的支持,否则我认为它将被关闭为“太宽泛”。它将吸引基于意见的答案。
-
谢谢@thst。你有一些关于自动机框架的链接和例子吗?我知道它非常广泛,但我真的不知道如何以另一种方式问这个问题,而且它已经让我很担心很长时间了。此外,也没有太多可以搜索的资源。
-
我找到了状态模式。当我有复杂计算的状态时,这似乎是一个很好的实现。
-
你可以在这里找到一些实现stackoverflow.com/questions/10875317/…
-
重新表述这个问题的一个好方法是展示你的实现的一个有代表性的部分,例如字节读取切换循环。然后其他人可能会评论您的实施并提出不同的方法。
标签: java oop design-patterns