Переключатель подобен любой другой структуре управления. Есть места, где это лучшее / чистое решение, и многие другие места, где это совершенно неуместно.
В дизайне OO обычно считается предпочтительным в такой ситуации, как ваша, использовать разные типы сообщений / классы, которые наследуются от общего класса сообщений, а затем использовать перегруженные методы для «автоматически» различают разные типы.
В случае, подобном вашему, вы можете использовать перечисление, которое сопоставляется с вашими кодами действий, а затем присоединить атрибут к каждому перечисляемому значению, которое позволит вам использовать дженерики или тип -building для создания разных объектов подкласса Action, так что будет работать метод перегрузки.
Но это настоящая боль.
Оцените, есть ли опция дизайна, такая как перечисление, которое возможно в вашем решении. Если нет, просто используйте переключатель.