То, что у тебя есть, выглядит хорошо для меня. Это понятно, я чувствую себя уверенно, поддерживая его. В этом нет необходимости заниматься фантазией.
Например, использование причудливого шаблона, предложенного кем-то другим относительно использования классов вместо вашего enum, вероятно, приведет к созданию нового класса для каждого оператора case, и они, вероятно, войдут в файл, и вам потребуется еще один файл для базового интерфейса ... и это будет чертовски много всего. Я не знаю, как кто-то мог бы оправдать эту чертову кучу вещей как более простой способ выразить то, что вы уже сделали довольно хорошо.