Недостатки использования Java ENUM в качестве списка команд

У меня есть список команд, которые я запускаю в определенном порядке.

public enum TextFormatter {
Bold("bold",new BoldCommand()),
Superfancy("superfancy",new SuperfancyCommand());

    String tag;
    Command cmd;
    FormatterCommand(String tag, Command cmd) {
        this.tag = tag;
        this.cmd = cmd;
    }
    public void format(InputStream in, OutputStream out) {
        cmd.format(in,out);
    }
    public String toString() {
        return tag;
    }
} 

В большинстве случаев я буду запускать их так:

for(TextFormatter formatter : TextFormatter.values()) {
  formatter.format(in,out);
}

Но иногда JSON придет со специальным форматированием, тогда я создам List с помощью TextFormatter.tag и запускаю команды в другом порядке. Благодаря ENUM мой словарь доступных команд находится в одном месте.

  1. Каковы недостатки этого дизайна?
  2. Если он будет работать очень быстро? [потому что я использую enum вместо List]

1 ответ

Решение

Каковы недостатки этого дизайна?

Вы не показали нам достаточно дизайна, чтобы принять такое решение.

Одна вещь, которую вы, человек, не учли, это то, как вы собираетесь отображать строки в эти TextFormatter объекты.

Если он будет работать очень быстро? [потому что я использую enum вместо List]

Скорее всего, разница в производительности будет слишком мала, чтобы ее можно было измерить.


Итог: если вы думаете, что этот подход облегчает понимание вашего кода, используйте его.

Другие вопросы по тегам