Vermittlungsmodell
Objektorientiertes Design fördert die Verteilung von Verhaltensweisen über Objekte hinweg, was zu vielen Verbindungen zwischen Objekten führen kann. Im schlimmsten Fall muss jedes Objekt alle anderen Objekte kennen.
Obwohl die Aufteilung eines Systems in viele Objekte die Wiederverwendbarkeit verbessern kann, verringert der Anstieg der miteinander verbundenen Objekte seine Wiederverwendbarkeit. Eine große Anzahl von Verbindungsbeziehungen macht es einem Objekt unmöglich, ohne die Unterstützung anderer Objekte zu arbeiten (das System manifestiert sich als unteilbares Ganzes), und es ist schwierig, zu diesem Zeitpunkt wesentliche Änderungen am Systemverhalten vorzunehmen. Da das Verhalten zwischen vielen Objekten verteilt ist, ist das Ergebnis, dass viele Unterklassen definiert werden müssen, um das Verhalten des Systems anzupassen. Daher haben wir den Mediator -Objektmediator eingeführt:
Durch das Zwischenobjekt kann das System der Netzstruktur in eine Sternstruktur umgewandelt werden, die auf dem Vermittler zentriert ist . Jedes spezifische Objekt hat keine direkte Beziehung mehr zu einem anderen Objekt, sondern wird durch das intermediäre Objekt daraus vermittelt . Durch die Einführung des Vermittlerobjekts wird die Systemstruktur aufgrund der Einführung neuer Objekte auch keine große Anzahl von Modifikationen unterzogen.
Mediatormodus: Auch als Mediatormodus bezeichnet, verwendet ein Mediator -Objekt , um die Interaktion einer Reihe von Objekten zu verkapulieren, sodass jedes Objekt nicht angezeigt und aufeinander referenziert werden muss, wodurch die Kopplung gelöst und seine Interaktionen unabhängig voneinander gelöst werden muss :
(Bildquelle: Entwurfsmuster: Die Grundlage wiederverwendbarer objektorientierter Software) Tipps: Jeder Kollegen kennt nur die Existenz des Mediators und muss nicht wissen, ob andere Kollegen existieren (oder wie sie entkoppelt werden). Es muss nur eine Nachricht an den Mediator senden und dann an andere Kollegen weiterleiten ( der Mediator speichert alle Kollegenbeziehungen , und nur Mediator weiß, wie viele/welche Kollegen es gibt).
Modus -Implementierung
Die Vereinten Nationen leiten Aussagen aus verschiedenen Ländern vor und vermitteln Beziehungen zu jedem Land:
Staaten senden und empfangen Nachrichten an den UN -Sicherheitsrat, die „angemessen“ Anfragen unter den Staaten nach kollaborativen Maßnahmen „angemessen“ vorstellen:
Hochschule
Zusammenfassung Kollege -Klasse, Definieren Sie die öffentlichen Methoden jedes Kollegen:
/** * @Author Jifang * @Since 16/8/28 16:22 PM. */public abstract Class Country {Protected UnitedNations Mediator; privater Zeichenfolge Name; öffentliches Land (UnitedNations Mediator, String Name) {this.Mediator = Mediator; this.name = name; } public String getName () {return name; } geschützte abstrakte void Declare (String msg); geschützte abstrakte void empfangen (String msg);}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ConcreteColleague
Spezifische Kollegen:
• Jede Kollegenklasse kennt ihr Mediatorobjekt.
• Jedes Kollegungsobjekt kommuniziert mit seinem Vermittler, wenn es mit anderen Kollegen kommunizieren muss.
Class USA erweitert Country {public USA (UnitedNations Mediator, String Name) {Super (Mediator, Name); } @Override public void declare (String msg) {Mediator.declare (this, msg); } @Override public void empfangen (String msg) {System.out.println ("USA erhalten: [" + msg + "]"); }} Klasse Iraq erweitert das Land {public Iraq (UnitedNations Mediator, String Name) {Super (Mediator, Name); } @Override public void declare (String msg) {Mediator.declare (this, msg); } @Override public void recemed (String msg) {System.out.println ("Iraq empfangen: [" + msg + "]"); }} Klasse China erweitert Land {public China (UnitedNations Mediator, String Name) {Super (Mediator, Name); } @Override public void declare (String msg) {Mediator.declare (this, msg); } @Override public void empfangen (String msg) {System.out.println ("China erhalten: [" + msg + "]"); }}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vermittler
Abstrakter Mediator: Definieren Sie eine Schnittstelle zur Kommunikation mit Kollegenobjekten:
public Abstract Class UnitedNations {Protected List <Country> Länder = new LinkedList <> (); public void Register (Landland) {Länder.Add (Land); } public void entfernen (Landland) {Länder.Remove (Land); } geschützte abstrakte Leere deklarieren (Landland, String -MSG);}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Konkretemediator
Spezifischer Vermittler:
• seine einzelnen Kollegen verstehen und aufrechterhalten;
• Erkennen Sie das kollaborative Verhalten, indem Sie jedes Kollegen Objekt koordinieren (Empfangen Sie Nachrichten von Kollegen und geben Sie Bestellungen an bestimmte Kollegen aus).
Klasse UnitedNationSecurityCuncil erweitert UnitedNations { / ** * Der Sicherheitsrat vermittelt in der Mitte * * @Param Country * @param msg * / @Override Protected Void Declare (Landland, String msg) {für (Country Tocountry) {if (! tocountry.equals (Land) {String Name = String Name = String Name = String Name = String Name = Landesname = Stingname = Landesname = Streichername = Streicher -Name = String name.Gertry. tocountry.receive (Name + "friedlich sagen:" + msg); }}}} Wenn es keine Verlängerung gibt, kann der Mediator mit dem Konkretemediator in einen kombiniert werden.
• Kunde
öffentliche Klasse Client {@test public void Client () {UnitedNations mediator = new UnitedNationsSecuritycouncil (); Country USA = New USA (Mediator, "USA"); Land China = neues China (Mediator, "China"); Land Irak = neuer Irak (Mediator, "Irak"); Mediator.register (USA); Mediator.register (China); Mediator.register (Irak); USA.Declare ("Ich möchte den Irak angreifen, wen interessiert es, wen ich eilig habe !!!"); System.out.println ("----------------"); China.Declare ("Wir verurteilen nachdrücklich !!!"); System.out.println ("-----------------------"); Irak.Declare ("Komm schon, komm gegenseitig verletzt !!!"); }}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Zusammenfassung
Die Entstehung von Mediator reduziert die Kopplung zwischen jedem College und ermöglicht es dem Kollegen und dem Mediator, unabhängig zu verändern und wiederverwendet zu werden. Da die Objekte zusammenarbeiten, wird die Mediation als unabhängiges Konzept angesehen und in einem Objekt eingekapselt, der Schwerpunkt der Aufmerksamkeit wird vom Verhalten der einzelnen Objekte selbst auf die Interaktion zwischen ihnen verschoben, so dass das System aus einer makroigeren Perspektive angesehen werden kann.
•Anwendbarkeit
Das Vermittlungsmodell ist im System leicht anzuwenden und kann im System leicht missbraucht werden. Wenn im System eine komplexe Objektgruppe für "Viele zu viele" erscheint, beeilen Sie sich nicht, den Vermittler zu verwenden. Es ist am besten, zuerst darüber nachzudenken, ob das Systemdesign angemessen ist. Da die Konkretemediator die Zentralisierung kontrolliert, wird die Wechselwirkungskomplexität zur Komplexität des Vermittlers, wodurch der Vermittler komplexer ist als jeder Betontecolleague. Es wird empfohlen, das Vermittlermodell in den folgenden Situationen zu verwenden:
◦ Eine Gruppe von Objekten kommunizieren genau definiert, aber komplex. Die daraus resultierenden Interdependenzen sind verwirrend und schwer zu verstehen.
◦ Ein Objekt bezieht sich auf viele andere Objekte und kommuniziert direkt mit diesen Objekten, sodass es schwierig ist, das Objekt wiederzuverwenden.
◦ Möchten Sie ein Verhalten an mehreren Klassen anpassen, aber nicht zu viele Unterklassen generieren.
• Verwandte Modi
◦Facade unterscheidet sich von Mediatoren darin, dass es ein Objektsubsystem abstrahiert und somit eine bequemere Schnittstelle bietet. Sein Protokoll ist unidirektional, dh Fassadenobjekte stellen Anfragen an diese Subsystemklasse, aber ansonsten nicht. Im Gegenteil, Mediator bietet Verhaltensweisen für Zusammenarbeit, die nicht unterstützt werden oder von jedem College-Objekt nicht unterstützt werden können, und das Protokoll ist multidirektional.
◦Colleague kann mit dem Vermittler mit dem Observer -Modus kommunizieren.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.