Ich habe gerade die Chain of Responsibility neulich gesucht und bin auf this Beispiel gestoßen.Was ist der Unterschied zwischen dem Design-Pattern Chain of Responsibility und einem einfachen if-elseif-else-Block?
Grundsätzlich gibt es einen abstrakten Handler, und dann sind konkrete Handler, von denen jeder die Handle-Methode des übergeordneten abstrakten Handlers implementieren. Die Implementierung ist so, dass zuerst geprüft wird, ob dieser bestimmte Handler die aktuelle Anfrage verarbeiten kann, und wenn nicht, gibt er die Anfrage an seinen Nachfolger weiter.
Jetzt könnte ich auch das gleiche mit einem einfachen if-else-bedingten Block machen. So nehmen Sie das erste Beispiel aus den obigen Link, hier ist, wie ich es ändern:
class SingleHandler
{
if(request > 0 && request <= 10)
{
// Process request
}
else if(request > 10 && request <= 20)
{
// Process request differently
}
else if(request > 20 && request <= 30)
{
// Process request differently
}
}
Nun, meine Frage ist, was ist der grundlegende Unterschied zwischen den beiden? Gibt es einen bestimmten Grund, warum ich die Chain of Responsibility überhaupt verwenden sollte, wenn ich die gleiche Funktionalität mit if-else-Blöcken bereitstellen kann? Was ist besser in Bezug auf Leistung, Speicherverbrauch, Wartbarkeit, Skalierbarkeit?