Я использовал State Pattern в обычном автомате. Я хотел иметь возможность перейти от [ A -> B ], [ B -> C ] и [ A -> C ].
Теперь у нашего домена есть новое правило, теперь мне нужно перейти от [C -> A] также, но только , если я никогда не был в B до .
Итак, у нас есть состояний с памятью . Есть два возможных решения:
- Создать новое состояние CB , что означает C после B , и иметь эти правила [ A -> B ], [ B -> CB ], [ A -> C ], [ C -> A ]
- Используйте тот факт, что у нашего контекста есть список с предыдущими состояниями (давайте назовем его StateHistoric) и датой, когда были сделаны переходы (история состояний также является требованием домена нашего клиента), а затем используйте эти правила [ A -> B ], [ B -> C ], [ A -> C ], [ C -> A , если B НЕ в Context.StateHistoric].
Какой из этих двух способов является более правильным способом использования памяти для шаблона состояния? (или другая альтернатива этим 2)
Спасибо