国家设计模式,但避免单身人士

时间:2012-01-18 02:59:10

标签: design-patterns singleton

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

感谢任何帮助。 e.g。

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;
      }
  }  
}  

1 个答案:

答案 0 :(得分:2)

StateLocator,就像你使用它一样,是“注册表”模式

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

对您的设计一无所知,这是避免单身人士的好方法。注册表可以是单身人士(不一定是)。