2016-04-08 8 views
0

Ich habe die chain of the responsibility pattern gelesen, die Beispiele sind nichts anderes als normales Drucken. Was ist, wenn ich schwierigere Operationen zusammen verketten möchte, zum Beispiel, gibt es einige Anwendungsfälle im wirklichen Leben:Die Verkettung von Verantwortungsmustern erfordert unterschiedliche Parametertypen?

Nehmen eine Anfrage, Anfrage -> Handler 1 (Anfrage, Integer) -> Handler 2 (Integer, String) -> Handler 3 (String, Long),

, wobei jeder Handler eine Eingabe von Parametern übernimmt und Ausgaben in einem anderen Parametertyp generiert. Können wir solche Handler unter Verwendung Generic Idee?

public abstract class Handler <Input, Output> { 
 
    public void setSuccessor(Handler handler); 
 
    public abstract Output handleRequest(Input in); 
 
}

Ich hoffe, dass ich die Probleme deutlich genug klären. Danke!

Antwort

0

In einer Kette von Verantwortung, jedes Element der Kette muss mit dem nächsten Element eingerichtet werden, so dass es im Voraus wissen muss, was die Schnittstelle sein sollte. In vielen Fällen wird ein Kontext herumgereicht.

Sind Sie sicher, dass Sie keine Sequenz zur Hand haben, in der Handler zwei vom Ergebnis von Handler 1 abhängig ist, um seine Arbeit zu erledigen? Wenn das der Fall ist, wird die Kette der Verantwortung nicht funktionieren.

Eine Kette der Verantwortung wird verwendet, wenn zur Kompilierzeit, Sie keine Ahnung haben, welche Schritte notwendig sein werden, aber zum Beispiel, wenn sie aus der Konfiguration kommen.

Verwandte Themen