как менять статусы в определённом порядке?
задача: есть приложение, там гора статусов, если стоит текущий статус, то можно поменять только на один из определённых статусов: вопрос как обычно такое реализовывать?
Ответы (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() для определения конкретных типов состояний. И наоборот, можно добавить метод получения состояний для конкретной категории.