Я столкнулся с некоторыми примерами состояний машин, написанными как перечисления. Например:Сцепление в перечислениях
public enum State {
INITIAL {
@Override
public State process(char ch) { return MIDDLE; }
},
MIDDLE {
@Override
public State process(char ch) {
switch (ch) {
case 'a': return INITIAL;
default: return FINAL;
}
}
},
FINAL {
@Override
public State process(char ch) { return FINAL; }
};
public abstract State process(char ch);
public static State initial() { return INITIAL; }
}
Что касается меня, то есть константы знают друг друга. Их реализации могут быть изменены, и если константы добавляются (или удаляются), подразумеваются дополнительные изменения.
Однако все изменения содержатся в перечислении, если только внешний код не ссылается на константы напрямую и не делает предположений о таблице переходов.
Таким образом, этот код сильно связан, слабо связан, или он субъективный?
Да, я мог видеть отдельный класс трюмов логики переходов состояний, а не охватывает, что в перечислении. – GriffeyDog
@GriffeyDog Перечисление может быть закрытым и вложенным внутри некоторого класса, который представляет собой правильный экземпляр конечного автомата. Итак, я предполагаю, что это сокращенная версия действий и, вероятно, не является хорошей практикой в любом серьезном коде. – afsantos