Государственный шаблон дизайна, но избегая одиночек - PullRequest
1 голос
/ 18 января 2012

Это становится немного сложнее. Я использую шаблон состояний в своем приложении для управления состояниями. Я хочу, чтобы в моем приложении был один экземпляр каждого состояния, но я не хочу делать каждый класс состояний единичным. Другой подход, который приходит мне в голову - это написание класса 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;
      }
  }  
}  

1 Ответ

2 голосов
/ 18 января 2012

StateLocator, в том виде, в каком вы его используете, является шаблоном «Registry»

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

Ничего не зная о вашем дизайне, это хороший способ избежать одиночных игр.Реестр может быть одноэлементным (необязательно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...