Vermittler-Muster

Das Vermittler-Muster definiert einen Gegenstand, der kurz zusammenfasst, wie eine Reihe von Gegenständen aufeinander wirkt. Wie man betrachtet, ist dieses Muster ein Verhaltensmuster wegen der Weise, wie es das laufende Verhalten des Programms verändern kann.

Gewöhnlich wird ein Programm aus (manchmal groß) Zahl von Klassen zusammengesetzt. So die Logik und Berechnung wird unter diesen Klassen verteilt. Jedoch, weil mehr Klassen in einem Programm, besonders während der Wartung und/oder des Wiederfactorings entwickelt werden, kann das Problem der Kommunikation zwischen diesen Klassen komplizierter werden. Das macht das Programm härter, zu lesen und aufrechtzuerhalten. Außerdem kann es schwierig werden, das Programm zu ändern, da jede Änderung Code in mehreren anderen Klassen betreffen kann.

Mit dem Vermittler-Muster wird die Kommunikation zwischen Gegenständen mit einem Vermittler-Gegenstand kurz zusammengefasst. Gegenstände kommunizieren nicht mehr direkt mit einander, aber kommunizieren stattdessen durch den Vermittler. Das reduziert die Abhängigkeiten zwischen dem Kommunizieren von Gegenständen, dadurch die Kopplung senkend.

Definition

Die Essenz des Vermittler-Musters soll einen Gegenstand "definieren, der kurz zusammenfasst, wie eine Reihe von Gegenständen aufeinander wirkt. Vermittler fördert lose Kopplung, indem er Gegenstände davon abhält, sich bis einander ausführlich zu beziehen, und sie lässt Sie ihre Wechselwirkung unabhängig ändern.

".

Beispiel

Import java.awt. Schriftart;

Import java.awt.event. ActionEvent;

Import java.awt.event. ActionListener;

Import javax.swing. JButton;

Import javax.swing. JFrame;

Import javax.swing. JLabel;

Import javax.swing. JPanel;

//Kollege-Schnittstelle

verbinden Sie Befehl {\

Leere führt durch;

}\

//Abstrakter Vermittler

verbinden Sie IMediator {\

leeres Buch ;

leere Ansicht ;

leere Suche ;

Leere registerView (BtnView v);

Leere registerSearch (BtnSearch s);

Leere registerBook (BtnBook b);

Leere registerDisplay (LblDisplay d);

}\

//Konkreter Vermittler

Klassenvermittler führt IMediator {\durch

BtnView btnView;

BtnSearch btnSearch;

BtnBook btnBook;

Show von LblDisplay;

//....

Leere registerView (BtnView v) {\

btnView = v;

}\

Leere registerSearch (BtnSearch s) {\

btnSearch = s;

}\

Leere registerBook (BtnBook b) {\

btnBook = b;

}\

Leere registerDisplay (LblDisplay d) {\

zeigen Sie sich = d;

}\

leeres Buch {\

(falscher) btnBook.setEnabled;

(wahrer) btnView.setEnabled;

(wahrer) btnSearch.setEnabled;

show.setText ("..." vorbestellend);

}\

leere Ansicht {\

(falscher) btnView.setEnabled;

(wahrer) btnSearch.setEnabled;

(wahrer) btnBook.setEnabled;

show.setText ("..." ansehend);

}\

leere Suche {\

(falscher) btnSearch.setEnabled;

(wahrer) btnView.setEnabled; (wahrer) btnBook.setEnabled;

show.setText ("..." suchend);

}\}\

//Ein konkreter Kollege

Klasse BtnView erweitert JButton-Werkzeug-Befehl {\

IMediator med;

BtnView (ActionListener al, IMediator m) {\

fantastisch ("Ansicht");

addActionListener (al);

med = M;

med.registerView (das);

}\

öffentliche Leere führt {\durch

med.view ;

}\}\//Ein konkreter Kollege

Klasse BtnSearch erweitert JButton-Werkzeug-Befehl {\

IMediator med;

BtnSearch (ActionListener al, IMediator m) {\

fantastisch ("Suche");

addActionListener (al); med = M;

med.registerSearch (das);

}\ öffentliche Leere führt {\durch

med.search ;

}\}\//Ein konkreter Kollege

Klasse BtnBook erweitert JButton-Werkzeug-Befehl {\

IMediator med;

BtnBook (ActionListener al, IMediator m) {\

fantastisch ("Buch");

addActionListener (al); med = M;

med.registerBook (das);

}\ öffentliche Leere führt {\durch

med.book ;

}\}\

Klasse LblDisplay erweitert JLabel {\

IMediator med;

LblDisplay (IMediator m) {\

super ("Fangen gerade..." an);

med = M;

med.registerDisplay (das);

setFont (neue Schriftart ("Arial", Schriftart. KÜHN, 24));

}\}\

Klasse MediatorDemo erweitert JFrame-Werkzeuge ActionListener {\

IMediator med = neuer Vermittler ;

MediatorDemo {\

JPanel p = neuer JPanel ;

p.add (neuer BtnView (das, med));

p.add (neuer BtnBook (das, med));

p.add (neuer BtnSearch (das, med));

getContentPane .add (neuer LblDisplay (med), "Norden");

getContentPane .add (p, "Süden");

setSize (400, 200);

(wahrer) setVisible;

}\

öffentliche Leere actionPerformed (ActionEvent ae) {\

Befehlen Sie comd = (Befehl) ae.getSource ;

comd.execute ;

}\ öffentliche statische leere Hauptsache (Schnur [] args) {\

neuer MediatorDemo ;

}\}\</Quelle>

Teilnehmer

Vermittler - definiert die Schnittstelle für die Kommunikation zwischen Kollege Gegenstände

ConcreteMediator - führt die Vermittler-Schnittstelle durch und koordiniert Kommunikation zwischen Kollege-Gegenständen. Es ist aller Kollegen bewusst, und ihr Zweck hinsichtlich beerdigen Kommunikation.

ConcreteColleague - kommuniziert mit anderen Kollegen durch seinen Vermittler

Siehe auch

  • Datenvermittlung
  • Designmuster, das Buch, das die Studie von Designmustern in der Informatik verursacht
hat
  • Designmuster (Informatik), eine Standardlösung von häufigen Problemen im Softwaredesign

Außenverbindungen


Dolmetscher-Muster / Beobachter-Muster
Impressum & Datenschutz