Mar*_*coS 1 java state design-patterns
我使用State模式来实现一个简单的有限状态机.看一下维基百科上给出的描述,更具体地说是建议的Java实现,我想知道为什么实现State接口的类(即各种状态)不是单例?
在建议的实现中,每当发生转换时都会创建一个新状态.但是,一个对象足以代表每个状态.那么,为什么每次发生转换时都会浪费时间创建一个新实例?
Mat*_*ell 10
因为每个州都可以存储实例变量?
看一下您参考的维基百科示例:
class StateB implements State {
private int count=0;
public void writeName(StateContext stateContext, String name) {
System.out.println(name.toUpperCase());
if(++count>1) {
stateContext.setState(new StateA());
}
}
}
Run Code Online (Sandbox Code Playgroud)
你能看到它如何存储输入次数的计数吗?
现在,在FSM中,您可能希望每个状态都是幂等的(后续调用给出相同的反馈),但State模式更通用.维基百科页面上描述的一个目标用途是:
对象在运行时部分更改其类型的简洁方法
由于大多数对象在执行操作时可能使用其局部变量,因此您还希望"更改类型"版本也使用局部变量.
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |