1

这变得有点棘手。我在我的应用程序中使用状态模式来管理状态。我想在我的应用程序中拥有每个状态的单个实例,但我不想将每个状态类都设为单例类。我想到的另一种方法是编写 StateLocator 类。StateLocator 可以是单例的,它可以保存所有状态的实例。请指导我 StateLocator 是否看起来是一个好的解决方案,或者是否有任何其他解决方案我仍然能够只有一个状态实例并且可以避免单例。

任何帮助表示赞赏。例如

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 回答