Das beste Besuchermuster-Tutorial im Jahr 2024. In diesem Tutorial können Sie Einführung,Realisierung, lernen
Im Besuchermuster (Visitor Pattern), verwenden wir ein Besucher-Klasse handelt, die Ausführungsalgorithmus Elementklassen ändert. Auf diese Weise kann mit der Implementierung des Algorithmus ein Besucher Element geändert wird. Diese Art von Entwurfsmustern gehören Verhaltensmuster. Nach Muster hat Element-Objekt die Ziel-Besucher angenommen, so dass die Besucher Objekte Bedienelement-Objekt verarbeiten kann.
Absichten: Die Hauptstruktur der Daten und Datenmanipulation Trennung.
Vor allem zu lösen: eine stabile Datenstruktur und variable Betriebskopplungsproblem.
Wenn verwenden: die Notwendigkeit für eine Zielstruktur von Objekten in viele verschiedene und unabhängige Handlungen, aber diese Maßnahmen müssen "Verschmutzung" der Klasse dieser Objekte, die Verwendung der Besucher auf diese Pakete zu der Klasse zu vermeiden.
Wie zu beheben: die Klasse zugegriffen innen plus ein Empfang der ausländischen Besucher - Schnittstelle zur Verfügung zu stellen.
Der Schlüsselcode: die Datenbank - Klasse , die eine Methode, die Besucher zu akzeptieren, selbst ein Verweis auf ankommende Besucher.
Anwendungsbeispiel: Sie sind Gast bei einem Freund zu Hause, sind Sie ein Besucher, ein Freund akzeptiert Ihren Besuch durch Beschreibung Ihres Freundes, dann die Beschreibung eines Freundes ein Urteil zu bilden, die das Besuchermuster ist.
Vorteile: 1, im Einklang mit der einzigen Verantwortung Prinzip.2, hervorragende Skalierbarkeit. 3, Flexibilität.
Nachteile: 1, die spezifischen Elemente des Besuchers angekündigt Details einer Verletzung des Grundsatzes der Demeter.2, die spezifischen Elemente des Wandels schwieriger. 3, in Verletzung des Dependency Inversion Prinzip, sich auf eine bestimmte Klasse, die auf Abstraktion nicht verlassen.
Einsatzszenarien: 1, das Objekt der Objektklassenstruktur entsprechend selten ändert, aber oft brauchen einen neuen Betrieb auf dieser Objektstruktur zu definieren.2, die Notwendigkeit für eine Zielstruktur von Objekten in vielen verschiedenen und unabhängigen Aktionen, aber diese Maßnahmen müssen "Verschmutzung" der Klasse dieser Objekte zu vermeiden, wollen wir nicht diese Klassen zu ändern, wenn Sie einen neuen Vorgang hinzufügen.
Hinweis: Besucher - Funktion vereint werden können, können Sie einen Bericht zu tun, UI, abfangen und Filter.
Wir werden eine Definition für einen akzeptablen BetriebComputerPartSchnittstelle erstellen.Tastatur,Maus, Monitor undComputererreichen die EntitätsklassenComputerPartSchnittstelle. Wir werden eine weitere SchnittstelleComputerPartVisitor definieren,die die Art der Operation an Besucher definiert.Computerverwenden Entity Besucher geeignete Maßnahmen zu ergreifen.
VisitorPatternDemozeigen wir die Verwendung von KlassenComputer,ComputerPartVisitor Klasse die Verwendung des Besuchermuster zu demonstrieren.
Definieren Sie eine Schnittstelle, die das Element darstellt.
ComputerPart.java
public interface Klasse ComputerPart { public void accept (ComputerPartVisitor computerPartVisitor); }
Erstellen Sie die Entitätsklassen oben Klasse erweitert.
Keyboard.java
public class Tastatur implementiert ComputerPart { @Override public void accept (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (this); } }
Monitor.java
public class-Monitor implementiert ComputerPart { @Override public void accept (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (this); } }
Mouse.java
public class Maus implementiert ComputerPart { @Override public void accept (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (this); } }
Computer.java
public class-Computer implementiert ComputerPart { ComputerPart [] Teile; öffentlichen Computer () { Teile = new ComputerPart [] {neue Maus (), neue Tastatur (), neue Monitor ()}; } @Override public void accept (ComputerPartVisitor computerPartVisitor) { for (int i = 0; i <parts.length; i ++) { Teile [i] .Accept (computerPartVisitor); } computerPartVisitor.visit (this); } }
Definieren Sie eine Darstellung Besucher-Schnittstelle.
ComputerPartVisitor.java
public interface ComputerPartVisitor { public void Besuch (Computer Computer); public void Besuch (Mouse Maus); public void Besuch (Keyboard Tastatur); public void Besuch (Monitor Monitor); }
Besucher Einheit geschaffen, um die oben genannten Klasse zu erreichen.
ComputerPartDisplayVisitor.java
public class ComputerPartDisplayVisitor implementiert ComputerPartVisitor { @Override public void Besuch (Computer Computer) { System.out.println ( "Computer angezeigt."); } @Override public void Besuch (Mouse Maus) { System.out.println ( "angezeigte Maus."); } @Override public void Besuch (Keyboard Tastatur) { System.out.println ( "Keyboard angezeigt."); } @Override public void Besuch (Monitor Monitor) { System.out.println ( "Monitor-Anzeige."); } }
Verwenden SieComputerPartDisplayVisitorTeil desComputerszuzeigen.
VisitorPatternDemo.java
public class VisitorPatternDemo { public static void main (String [] args) { ComputerPart Computer = new-Computer (); computer.accept (neu ComputerPartDisplayVisitor ()); } }
Stellen Sie sicher, ausgegeben.
Anzeige der Maus. Angezeigte Tastatur. Anzeige von Monitor. Anzeige von Computer.