Здравствуйте, hardcase, Вы писали:
H>состояние есть объект, переходами являются ссылки между ними в виде свойств, этот граф можно распечатать в Dot нотацию и получить визуализацию.
Означает ли это, что экземпляры состояний и весь граф фиксированы заранее на всё время жизни автомата?
Что если у состояния должно быть своё заранее не фиксированное состояние?
Например:
internal sealed class MovingState : IState<...>
{
private readonly Vector2 _velocity;
internal MovingState(Vector2 velocity) => _velocity = velocity;
...
}
Отличие машины состояний от конечного автомата в том, что в машине число состояний потенциально бесконечное. Скажем MovingState — это бесконечное семейство состояний, параметризующихся значением velocity. На этот параметр влияют входные события/триггеры автомата, и сам этот параметр влияет на целевые состояния при переходах по входным событиям/триггерам. Кроме этого на целевые состояния при переходах влияет неявное и переменчивое состояние внешнего мира.