1

これは少しトリッキーになってきています。アプリケーションで状態パターンを使用して状態を管理しています。アプリケーションで各状態のインスタンスを 1 つにしたいのですが、各状態クラスをシングルトン クラスとして作成したくありません。私が考えているもう 1 つのアプローチは、StateLocator クラスを作成することです。StateLocator はシングルトンにすることができ、すべての状態のインスタンスを保持できます。StateLocator が良い解決策に見えるかどうか、または状態のインスタンスを 1 つだけ持つことができ、シングルトンを回避できる可能性がある他の解決策があるかどうかを教えてください。

どんな助けでも大歓迎です。例えば

public interface TestState {

    public void onTest();  
    public void onApprove()

}

class StateA implements TestState {  
    public void onTest() {  
    }  
    public void onApprove() {  
    }  
}  

class StateB implements TestState {  
    public void onTest() {  
    }  
    public void onApprove() {  
    }  
}   

class StateLocator {  

    private StateA mStateA;   
    private StateB mStateB;  

    StateLocator() {  
        mStateA = new StateA();  
        mStateB = new StateB();  
   }  

   public TestState getState(int stateType) {

      if(stateType == 1) {
          return mStateA;
      } else {
         return mStateB;
      }
  }  
}  
4

1 に答える 1

2

StateLocator は、あなたが使用している方法では、「レジストリ」パターンです

http://martinfowler.com/eaaCatalog/registry.html

設計について何も知らない場合、これはシングルトンを回避する良い方法です。レジストリはシングルトンである可能性があります (必ずしもそうである必要はありません)。

于 2012-01-18T03:03:41.190 に答える