Ich habe einen "Legacy" -Code, den ich umgestalten möchte.
Der Code führt grundsätzlich einen Remote-Aufruf an einen Server aus und erhält eine Antwort zurück. Dann wird entsprechend der Antwort entsprechend ausgeführt.
Beispiel des Skeletts des Codes:Bestes Entwurfsmuster/Ansatz für eine lange Liste von if/else/Ausführen von Zweigen des Codes
public Object processResponse(String responseType, Object response) {
if(responseType.equals(CLIENT_REGISTERED)) {
//code
//code ...
}
else if (responseType.equals(CLIENT_ABORTED)) {
//code
//code....
}
else if (responseType.equals(DATA_SPLIT)) {
//code
//code...
}
etc
Das Problem besteht darin, dass es viele-many sind, wenn/sonst Zweige und der Code innerhalb jedes wenn nicht trivial ist.
So wird es schwer zu pflegen.
Ich frage mich, was ist das beste Muster dafür?
Ein Gedanke, den ich hatte, war ein einzelnes Objekt mit Methodennamen die gleiche wie der responseType zu erstellen und dann innerhalb von processResponse nur mit Reflection die Methode mit dem gleichen Namen wie der responseType aufrufen.
Dies würde ProzessResponse bereinigen, aber es verschiebt den Code auf ein einzelnes Objekt mit vielen/vielen Methoden und ich denke, Reflexion würde zu Leistungsproblemen führen.
Gibt es ein schönes Design Ansatz/Muster, um dies zu bereinigen?
In der Strategie-Muster, aber wie verwende ich die richtige Strategie zur Laufzeit? Z.B. In http://en.wikipedia.org/wiki/Strategy_pattern#Java wird nur eine Instanz einer Strategie festgeschrieben, während jeder Server antwortet, wie würde ich die richtige Strategie effizient nutzen? – Jim
TBH das Wörterbuch Beispiel obwohl gut, IMO ist kein Code wir schreiben normalerweise in Java – Jim
@Jim Entschuldigung, ich sah in den Tags und Java automatisch an Javascript gedacht. Ich aktualisiere meine Antwort –