Где обмениваться данными между двумя состояниями в коде, чтобы не вводить глобальные переменные и без Singleton? - PullRequest
0 голосов
/ 13 октября 2018

Предположим, что FSM имеет два состояния:1. S1 генерирует некоторые данные2. S2 нужны именно эти данныеТаким образом, предварительное условие S2 является постусловием S1.Этот псевдокод приходит мне в голову:

// method: changeState()...        
switch(changeTo){
    case "S2":
        // done with existence verification...
        S2 = stateFactory.byData(S1.getData());
        FSM.changeState(S2);
        break;
}

Это введет дополнительный аргумент для фабрики и может также сделать длинный переключатель с обработкой данных, где переключатель должен быть просто переключателем.Другим вариантом может быть определение изменения состояния на основе перехода, такого как changeFrom (состояние) и предоставление защиты и запуск необходимых действий, или просто проверка «предыдущего состояния» на фабрике при входе в S2.Ни один из них не слишком привлекателен.

Когда речь идет о разработке кода, где лучше всего осуществлять этот обмен данными?

...