Всем привет!
Пытаюсь понять паттерн "State"
Допустим у меня есть класс Кубик с Coords { get; private set; }. Этот класс, для простоты, имеет два состояния - active & locked. Эти состояния, согласно с шаблоном, должны наследовать BaseState и иметь два метода, которые реализуют переход друг в друга или в себя же.
Допустим у меня есть третий метод, Move, который смещает координаты кубика на некоторый вектор. Если кубик находится в состоянии "locked", то он не может двигаться. Если нет - его координаты смещаются. При этом третьего состояния для движения нет, это единичное действие.
Куда его стоит запихнуть?
Добавить метод в базовый стейт, реализовать его у наследников - допустим. Но как тогда сдвинуть координаты кубика, при том что координаты private set? Сделать публичный метод-сеттер? Но тогда это выглядит небезопасно, тк стейт машина имеет защиту в зависимости от состояния, а просто публичный метод для смещения координат - нет...