Я всегда считал, что крупные заявления о переключении являются симптомом плохого дизайна ООП. Раньше я читал статьи, в которых обсуждался этот вопрос, и они предоставили альтернирующие подходы на основе ООП, как правило, на основе полиморфизма для создания экземпляра подходящего объекта для обработки дела.
Я сейчас в ситуации, у которой есть чудовищный оператор switch, основанный на потоке данных из сокета TCP, в котором протокол состоит из команды с завершающей командой новой строки, за которой следуют строки данных, за которыми следует конечный маркер. Команда может быть одной из 100 различных команд, поэтому я хотел бы найти способ уменьшить этот оператор переключения монстров на что-то более управляемое.
Я сделал несколько поисковых запросов, чтобы найти решения, которые я помню, но, к сожалению, Google в наши дни превратился в пустоту нерелевантных результатов для многих видов запросов.
Существуют ли какие-либо шаблоны для такого рода проблем? Любые предложения о возможных реализациях?
Мне показалось, что я должен был использовать поиск в словаре, сопоставляя текст команды с типом объекта для создания экземпляра. Это имеет приятное преимущество, просто создавая новый объект и вставляя новую команду/тип в таблицу для любых новых команд.
Однако это также имеет проблему взрыва типа. Теперь мне нужно 100 новых классов, плюс мне нужно найти способ их чистое взаимодействие с моделью данных. Действительно ли "истинная инструкция switch" действительно подходит?
Буду признателен за ваши мысли, мнения или комментарии.