Я завжди дотримувався думки, що великі оператори комутаторів є симптомом поганого дизайну ООП. Раніше я читав статті, які обговорювали цю тему, і вони пропонували альтернативні підходи на основі ООП, як правило, засновані на поліморфізмі, щоб створити правильний об'єкт для розгляду справи.
Зараз я потрапив у ситуацію, яка має монстральний оператор перемикання, заснований на потоці даних із сокета TCP, в якому протокол складається в основному з команди завершення нового рядка, за якою слідують рядки даних, а потім кінцевий маркер. Команда може бути однією із 100 різних команд, тому я хотів би знайти спосіб зменшити цю операцію перемикання монстрів до чогось більш керованого.
Я кілька разів гуглив, щоб знайти рішення, які я пам’ятаю, але, на жаль, Google сьогодні став пусткою нерелевантних результатів для багатьох видів запитів.
Чи існують якісь закономірності для такого роду проблем? Будь-які пропозиції щодо можливих реалізацій?
Одна думка, яку я мав, - це використовувати пошук словника, узгоджуючи текст команди з типом об’єкта для створення екземпляра. Це має приємну перевагу просто створити новий об’єкт і вставити нову команду / тип у таблицю для будь-яких нових команд.
Однак це також має проблему вибуху типу. Зараз мені потрібно 100 нових класів, а також я повинен знайти спосіб їх чистого інтерфейсу до моделі даних. Чи справді "одне справжнє твердження про перемикання"?
Буду вдячний за ваші думки, думки чи коментарі.