Операторы IMO switch
не являются bad , но их следует избегать, если это возможно. Одним из решений было бы использовать Map
, где ключи являются командами, а значения Command
- объектами с помощью метода execute()
. Или List
, если ваши команды являются числовыми и не имеют пробелов.
Однако, как правило, вы должны использовать switch
заявления при реализации шаблонов проектирования; одним примером может быть использование шаблона цепочки ответственности для обработки команд, заданных любой командой «id» или «value». (Был также отмечен шаблон Strategy .) Однако в вашем случае вы также можете изучить шаблон Command .
В основном, в OOP, вы попытаетесь использовать другие решения, чем полагаться на блоки switch
, которые используют парадигму процедурного программирования. Однако, когда и как использовать это - это ваше решение. Я лично часто использую блоки switch
при использовании шаблона Factory и т. Д.
Определение организации кода:
Collection
API во многих фреймах) Math
... add
метод будет полагаться на другие методы для этого и не будет выполнять эту операцию сам, потому что это не контракт). Поэтому, если ваш оператор switch
выполняет различные операции, вы « нарушает » это определение, тогда как использование шаблона проектирования не соответствует каждой операции в собственном классе (это собственный набор функциональных возможностей).