Latest web development tutorials

Besuchermuster

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.

Einführung

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.

Realisierung

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.

Besucher-Muster UML-Diagramm

Schritt 1

Definieren Sie eine Schnittstelle, die das Element darstellt.

ComputerPart.java

public interface Klasse ComputerPart {
   public void accept (ComputerPartVisitor computerPartVisitor);
}

Schritt 2

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);
   }
}

Schritt 3

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);
}

Schritt 4

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.");
   }
}

Schritt 5

Verwenden SieComputerPartDisplayVisitorTeil desComputerszuzeigen.

VisitorPatternDemo.java

public class VisitorPatternDemo {
   public static void main (String [] args) {

      ComputerPart Computer = new-Computer ();
      computer.accept (neu ComputerPartDisplayVisitor ());
   }
}

Schritt 6

Stellen Sie sicher, ausgegeben.

Anzeige der Maus.
Angezeigte Tastatur.
Anzeige von Monitor.
Anzeige von Computer.