Теперь это может показаться простым, но я немного запутался. Я пытаюсь создать меню в моем приложении. В зависимости от определенных условий некоторые параметры меню будут включены / отключены. Поскольку он основан на консоли, я также хочу указать для каждого «состояния» меню, какие команды доступны пользователю.
Пример:
EMPTY_STATE
имеет ADD_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
FULL_STATE
имеет ADD_COMMAND, VIEW_COMMAND, REMOVE_COMMAND, QUIT_COMMAND
Я бы хотел, чтобы мое приложение было максимально гибким, а это означает, что я могу легко добавлять больше состояний и настраивать команды, которые можно использовать. Это означает, что я хотел бы избегать использования столбцов if, чтобы знать, что предпринято действие.
Поскольку каждое состояние имеет разные команды, я подумал о создании ENUM
с именем State
, который объединяет эти разные состояния. Я также создал ENUM
с именем Commands
, который содержит все возможные команды, которые пользователь мог выполнять при использовании моего приложения.
Моя основная идея была просто:
EMPTY_STATE(Commands.ADD_COMMAND,Commands.REMOVE_COMMAND,Commands.QUIT_COMMAND)
Таким образом, команды State countains и команды countains их метка, которая представляет собой строку префикса команды ("-add")
Но тогда государства могут создавать много команд, и в этом проблема. Так как я не могу и не хочу создавать конструктор для каждого случая в ENUM
, я подумал об использовании ArrayList, который бы объединял все команды, делая это:
EMPTY_STATE(Arraylist array = commands) <-- Just the idea
И вот тут-то и возникает мой вопрос. Как сказано в документации, arraylist может взять коллекцию в параметре, чтобы назначить свое внутреннее содержимое.
Могу ли я подсказать, как мне следует структурировать это, чтобы сделать его чистым и простым в управлении?