是否可以与state pattern分享使用flyweight pattern的示例(flyweight模式用于创建状态对象以节省内存)?
更新: 如何结合使用状态和fw模式?
答案 0 :(得分:3)
Autoboxing使用flyweight模式来最小化对象创建(对于较小的Integer值)
e.g。对于布尔值和字节,所有可能的值都被缓存。
Java对许多组件使用状态,但状态机还包括按州切换的功能。
以下是我使用enum
http://vanillajava.blogspot.com/2011/06/java-secret-using-enum-as-state-machine.html
答案 1 :(得分:1)
我通常使用状态模式来避免条件语句。
而不是使用:
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;
}
}
即。逻辑被移动到用于处理特定状态的小类。所以你得到两件事: