クラスの代わりに状態としてメソッドを使用して、状態パターンの修正バージョンに基づいて単純なステートマシンを実装しようとしています。次のようになります。
private Action<Input> currentState;
private void NextState(Input i) {
currentState(i);
}
private void State1(Input i) {
if( i ... )
currentState = State1;
else
currentState = State2;
}
private void State2(Input i) {
if( i ... )
currentState = State1;
else
currentState = State2;
}
しかし、私ができればもっとエレガントになるでしょう:
private void NextState(Input i) {
currentState = currentState(i);
}
private Func<xxx> State1() {
if( i ... )
return State1;
else
return State2;
}
しかし、私はこれを書く方法がわかりませんFunc
。これを行う方法はありますか?