[英]Java State design pattern / "substates"
我用 Java 编码,我使用状态设计模式,如下例: http : //onjavahell.blogspot.fr/2009/05/simple-example-of-state-design-pattern.html
然而,我得到的 UML 是这样的:
+---------+ +---------+
| Context |--------| State |
+---------+ +---------+
|
+----------------+
| |
+---------+ +---------+
| State 1 | | State 2 |
+---------+ +---------+
|
+----------------+
| |
+----------+ +----------+
| State 1A | | State 1B |
+----------+ +----------+
我有“子状态”。 如何编码? 我应该将抽象类State 1
还是有其他方法? 搜索我没有找到任何这样的例子。
“子状态”是什么意思? 在状态模式中,没有什么可以被视为“子状态”。 “State”代表实体的状态。 每个州都是一个州。 除非你对你想要达到的目标给出合理的解释,否则我相信你的想法是不正确的。
只要所有状态共享相同的基类/接口,它就会起作用。 你可能有状态之间的继承关系,它仍然有效,与状态模式无关。 而且,即使你有继承关系,它们仍然是“状态”,而不是“子状态”
如果没有有关您尝试建模的域的更多信息,一如既往有点难以说。 但是,您可能会发现主要情况:
State1A
和State1B
可以作为State1
子类。State1
选项 A 和 B 以及在State2
选项 A 和 B 中是有意义的。虽然不是常见情况,但有时会发生这种情况,这意味着您的对象实际上有两种类型的状态. 如何处理这在很大程度上取决于国家之间的互动; 如果它们是独立的,那么您可以将它们建模为单独的层次结构。 如果它们依赖于它们的行为,那么State
类又可以具有内部状态A
和B
。正如我所说,第二种情况很少见,但在某些设计中会发生。
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.