任何人都可以分享将状态模式与享元模式一起使用的示例(享元模式用于创建状态对象以节省内存)吗?
更新:如何使用状态和 fw 模式的组合?
自动装箱使用享元模式来最小化对象创建(对于较小的整数值)
例如,对于 Boolean 和 Byte,所有可能的值都被缓存。
Java 对许多组件使用状态,但是状态机还包括按状态切换的功能。
这是我使用http://vanillajava.blogspot.com/2011/06/java-secret-using-enum-as-state-machine.html编写的示例enum
我通常使用状态模式来避免条件语句。
而不是使用:
switch (state)
{
case ParserState.BeforeMethod:
//do some processing
break;
case ParserState.InMethod:
//do some processing
break;
}
我可以写:
currentState = currentState.process(context);
示例类可能看起来像
public class SomeClass : ParserState
{
public ParserState process(IParserContext context)
{
//do some proceccing
if (m_completed)
return new SomeOtherState();
return this;
}
}
即逻辑被移动到用于处理特定状态的小类。所以你得到两件事: