как менять статусы в определённом порядке?

задача: есть приложение, там гора статусов, если стоит текущий статус, то можно поменять только на один из определённых статусов: вопрос как обычно такое реализовывать?


Ответы (1 шт):

Автор решения: brun0

При помощи возможностей enum можно соорудить достаточно гибкую конструкцию.

 enum Input {
  NICKEL, QUARTER, DOLLAR,
  TOOTHPASTE, CHIPS, SODA, SOAP
}

enum Category {
MONEY(NICKEL, QUARTER, DOLLAR),
ITEM(TOOTHPASTE, CHIPS, SODA, SOAP)

private Input[] values;

Category(Input... types) {values = types;}

private static EnumMap<Input, Category> categories = new EnumMap(Input.class);

static {
 for (Category c: Category.class.getEnumConstants())
  for (Input type: c.values)
   categories.put(type, c);
}

public static Category categorize(Input input) {
 return categories.get(input);
}

}

Ну и, в конечном итоге, использовать метод categorize() для определения конкретных типов состояний. И наоборот, можно добавить метод получения состояний для конкретной категории.

→ Ссылка