Ich war immer der Meinung, dass große switch-Anweisungen ein Symptom für schlechtes OOP-Design sind. In der Vergangenheit habe ich Artikel gelesen, in denen dieses Thema behandelt wird, und sie haben alternative OOP-basierte Ansätze bereitgestellt, die normalerweise auf Polymorphismus basieren, um das richtige Objekt für die Behandlung des Falls zu instanziieren.
Ich bin jetzt in einer Situation, die eine monströse switch-Anweisung hat, die auf einem Datenstrom von einem TCP-Socket basiert, in dem das Protokoll im Grunde aus einem Befehl mit Zeilenumbruch besteht, gefolgt von Datenzeilen, gefolgt von einer Endmarkierung. Der Befehl kann einer von 100 verschiedenen Befehlen sein, daher möchte ich einen Weg finden, diese Monster-Switch-Anweisung auf etwas Verwaltbareres zu reduzieren.
Ich habe ein bisschen gegoogelt, um die Lösungen zu finden, an die ich mich erinnere, aber leider ist Google heutzutage für viele Arten von Abfragen zu einer Einöde irrelevanter Ergebnisse geworden.
Gibt es Muster für diese Art von Problem? Anregungen zu möglichen Implementierungen?
Ein Gedanke, den ich hatte, war die Verwendung einer Wörterbuchsuche, bei der der Befehlstext dem zu instanziierenden Objekttyp zugeordnet wurde. Dies hat den schönen Vorteil, dass lediglich ein neues Objekt erstellt und ein neuer Befehl / Typ für neue Befehle in die Tabelle eingefügt wird.
Dies hat jedoch auch das Problem der Typenexplosion. Ich brauche jetzt 100 neue Klassen und muss einen Weg finden, sie sauber mit dem Datenmodell zu verbinden. Ist die "One True Switch-Anweisung" wirklich der richtige Weg?
Ich würde mich über Ihre Gedanken, Meinungen oder Kommentare freuen.