フライウェイトパターンでステートパターンを使用する例を誰かが共有できますか(フライウェイトパターンは、メモリを節約するためにステートオブジェクトを作成するためのものです)?
更新:状態パターンとfwパターンの組み合わせを使用するにはどうすればよいですか?
フライウェイトパターンでステートパターンを使用する例を誰かが共有できますか(フライウェイトパターンは、メモリを節約するためにステートオブジェクトを作成するためのものです)?
更新:状態パターンとfwパターンの組み合わせを使用するにはどうすればよいですか?
オートボクシングはフライウェイトパターンを使用して、オブジェクトの作成を最小限に抑えます(整数の値が小さい場合)
たとえば、ブール値とバイト値の場合、すべての可能な値がキャッシュされます。
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;
}
}
つまり、ロジックは、特定の状態を処理するために使用される小さなクラスに移動されます。したがって、2つのことが得られます。