Die Kette des Verantwortungsmusters ist das Verhaltensmuster eines Objekts. In der Kette des Verantwortungsmodus werden viele Objekte durch den Hinweis jedes Objekts auf sein nächstes Zuhause in Verbindung gebracht, um eine Kette zu bilden. Die Anfrage wird dieser Kette weitergegeben, bis ein Objekt in der Kette beschließt, die Anforderung zu verarbeiten. Der Client, der diese Anfrage stellt, weiß nicht, welches Objekt in der Kette letztendlich die Anfrage bearbeitet, sodass das System die Verantwortlichkeiten dynamisch neu organisiert und zuordnen kann, ohne den Kunden zu beeinträchtigen.
Das Verantwortungskettenmodell ist eines der Verhaltensdesignmodelle. Wie kann man die Verantwortungskette verstehen? Die Verantwortungskette kann zu Beginn und am Ende als das Verbinden mehrerer Objekte verstanden werden. Jeder Knoten ist ein Objekt, und jedes Objekt entspricht einer anderen Verarbeitungslogik, bis ein Objekt auf die Verarbeitungsanforderung reagiert. Dieses Modell wird zum Verantwortungskettenmodell.
Können wir einen Prototyp des Verantwortungskettenmodells im Leben finden? Es gibt viele Beispiele dieser Art. Wenn Sie beispielsweise ein Haus kaufen möchten, ist das erste, was der Verkäufer (Antrag 1) Sie empfängt. Wenn Sie sagen, Sie möchten einen Rabatt von 3%, gibt es kein Problem. Zu diesem Zeitpunkt hat der Verkäufer die Befugnis, einen Rabatt von 3% zu gewähren, und der Verkäufer (Antrag 1) wird ihn umgehen. Zu diesem Zeitpunkt kam ein reicher Mann und sagte, er wolle 10 Einheiten kaufen und bat um einen Rabatt von 5%. Das Vertriebspersonal (Antrag 1) hatte nicht die Befugnis, einen Rabatt von 5% zu gewähren. Er musste sich an den Vorgesetzten, den Verkaufsdirektor und den Verkaufsdirektor (Antrag 2) bewerben, genehmigten den Antrag. Zu dieser Zeit kam der nationale Ehemann Xiao Wang. Xiao Wang sagte, er habe alle Immobilien zehn Prozent gekauft. Zu diesem Zeitpunkt hatte der Verkaufsdirektor (Ziel 2) nicht so viel Autorität und musste sich um die Genehmigung des CEO beantragen.
Mit anderen Worten, jeder Kunde wird von einem Verkäufer empfangen. Der Kunde schlägt unterschiedliche Berechtigungen vor, und der Verkäufer übergibt es an verschiedene Objekte zur Lieferung. Der Kunde kümmert sich nicht darum, welches Objekt seine Anfrage umgeht, wodurch die Kopplungsbeziehung zwischen dem Absender und dem Empfänger der Anfrage reduziert wird.
Im Folgenden verwenden wir eine Genehmigung für die Aufwand für die Geschäftsreise als Beispiel, um das folgende Verantwortungskettenmodell zu implementieren, und definieren zunächst eine abstrakte Führungsklasse:
Paket com.test.demo; public abstract Class Leader {geschützter Führer NextSandler; // Vorherige Führung öffentliche endgültige void HandlerRequest (int Money) {if (Geld <= limit ()) {// selse {if (nextHandler! /** Genehmigung*/ public abstraktes void Handler (int Money); }Dies ist eine abstrakte Klasse. Die folgenden erben es durch mehrere Klassen. Erstens die Gruppenleiterklasse:
Paket com.test.demo; Public Class Grougleader erweitert den Führer {public int limit () {return 1000; // Geben Sie an, dass der Teamleiter 1.000 Yuan -Genehmigungsbehörde hat} Public void Handler (int Money) {System.out.println ("Der Teamleiter genehmigt"+Geld); }}Vorgesetzte Kategorie:
Paket com.test.demo; Public Class Director erweitert den Führer {@Override public int limit () {return 5000; } @Override public void Handler (int Money) {System.out.println ("Der Supervisor genehmigt"+Geld); }}Manager -Kategorie:
Paket com.test.demo; Der öffentliche Klassenmanager erweitert den Führer {@Override public int limit () {return 10000; } @Override public void Handler (int Money) {System.out.println ("Der Manager genehmigt"+Geld); }}Bosskategorie:
Paket com.test.demo; Der CEO der öffentlichen Klasse erweitert den Anführer {@Override public int limit () {return Integer.max_value; } @Override public void Handler (int Money) {System.out.println ("CEO genehmigt"+Geld); }}Es gibt keine Begrenzung für Chefs. Hier finden Sie eine Definition eines Mitarbeiters Xiao Zhang, der sich für die Erstattung von Reiseverkehr beantragt:
Paket com.test.demo; public class xiaozhang {public static void main (String [] args) {Grougleader Grougleader = new croppleader (); Direktor Director = New Director (); Manager Manager = New Manager (); CEO CEO = neuer CEO (); Grougleader.NexHandler = Director; Director.NeTandhandler = Manager; Manager.NeTandhandler = CEO; Grougleader.HandlerRequest (50000); Grougleader.HandlerRequest (500); Grougleader.HandlerRequest (5000); }}Xiao Zhang beantragte drei Transaktionen wie den Teamleiter. Zu diesem Zeitpunkt lautet das Operationsbeispiel wie folgt:
Wir können sehen, dass verschiedene Fonds von verschiedenen Objekten verarbeitet werden. Xiao Zhang ist es egal, wer mit ihnen umgeht. Er muss nur den Teamleiter finden. Dies ist das Merkmal des Verantwortungskettenmodells.
Dies ist alles für Sie, um die relevanten Inhalte im Java Responsibility Chain Design -Modell einzuführen. Ich hoffe, es wird für Sie hilfreich sein!