Latest web development tutorials

odwiedzający

W odwiedzający (odwiedzający), używamy klasy użytkownik, zmienia klas elementów algorytmu wykonanie. W ten sposób, wykonanie algorytmu może być elementem użytkownik jest zmieniona. Tego rodzaju wzorców projektowych należą wzorców zachowań. Według wzorca, element obiektu zaakceptował docelowych użytkowników, więc użytkownicy mogą przenosić przedmioty działających elementów obiektu.

wprowadzenie

Zamiar: Podstawą struktury danych i ich separacji manipulacji.

Przede wszystkim rozwiązania: stabilną strukturę danych i zmiennych problemu sprzęgania operacyjnego.

Kiedy stosować: potrzebę struktury docelowej obiektów w wielu różnych, niepowiązanych działań, ale działania te muszą unikać "zanieczyszczenie" klasy tych obiektów, korzystanie z odwiedzających do tych pakietów do klasy.

Jak naprawić: klasa jest dostępna wewnątrz plus przyjęcie zagranicznych turystów, aby zapewnić interfejs.

Kod klawisza: klasa bazie danych, która ma metodę przyjąć gości, samo odniesienie do przychodzących gości.

Przykład zastosowania: Jesteś gościem w domu przyjaciół, jesteś gościem, przyjaciel akceptuje wizytę poprzez opis swojego znajomego, a następnie opis przyjaciela, aby podjąć decyzję w sprawie, która jest odwiedzający.

Zalety: 1, zgodnie z zasada jednej odpowiedzialności.2, doskonała skalowalność. 3, elastyczność.

Wady: 1, specyficzne elementy odwiedzającego ogłosił szczegóły dotyczące naruszenia zasady Demeter.2, szczegółowe elementy zmiany trudniejsze. 3, z naruszeniem zasady Dependency Inversion, polegać na konkretnej klasy, która nie opiera się na abstrakcji.

Scenariusze użycia: 1, obiekt odpowiadający strukturze klasy obiektów zmieniają się rzadko, ale często trzeba zdefiniować nową operację na tej struktury obiektu.2, potrzeba struktury docelowej obiektów w wielu różnych, niepowiązanych działań, ale działania te muszą unikać "zanieczyszczenie" klasy tych obiektów, nie chcemy zmodyfikować te zajęcia podczas dodawania nowej operacji.

Uwaga: Użytkownicy mogą zostać ujednolicone funkcji, można zrobić raportu, Ul, przecięcia i filtr.

realizacja

Stworzymy akceptowalnej definicji interfejsu OperacjaComputerPart.Klawiatura, mysz, monitor ikomputerosiągnąć interfejsComputerPartpodmiot klas. Będziemy zdefiniować innyComputerPartVisitor interfejsu,który określa rodzaj operacji dla zwiedzających. korzystania zkomputeraodwiedzających jednostkę w celu podjęcia odpowiednich działań.

VisitorPatternDemo wykazujemystosowaniekomputerze klasy,klasyComputerPartVisitorwykazać użycie odwiedzający.

odwiedzający diagram UML

Etap 1

Definiowanie interfejsu, który reprezentuje element.

ComputerPart.java

Klasa public interface ComputerPart {
   public void zaakceptować (ComputerPartVisitor computerPartVisitor);
}

Etap 2

Tworzenie rozszerza podmiot klas wyżej klasy.

Keyboard.java

public class Keyboard wdraża ComputerPart {

   @Override
   public void zaakceptować (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (this);
   }
}

Monitor.java

public class monitor realizuje ComputerPart {

   @Override
   public void zaakceptować (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (this);
   }
}

Mouse.java

public class Mouse realizuje ComputerPart {

   @Override
   public void zaakceptować (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (this);
   }
}

Computer.java

public class komputerowy realizuje ComputerPart {
	
   ComputerPart [] części;

   Komputer publicznego () {
      Części = new ComputerPart [] {new Mouse (), nowa klawiatura (), nowy monitor ()};		
   } 


   @Override
   public void zaakceptować (ComputerPartVisitor computerPartVisitor) {
      for (int i = 0; i <parts.length; i ++) {
         części [i] .accept (computerPartVisitor);
      }
      computerPartVisitor.visit (this);
   }
}

etap 3,

Definiowanie interfejsu reprezentacji użytkowników.

ComputerPartVisitor.java

public interface ComputerPartVisitor {
	public void wizyta (Komputery);
	public void wizyta (Mouse mysz);
	public void wizyta (klawiatura);
	public void wizyta (monitor Monitor);
}

Etap 4

Goście podmiot utworzony w celu osiągnięcia wyżej wymienionych klas.

ComputerPartDisplayVisitor.java

public class ComputerPartDisplayVisitor realizuje ComputerPartVisitor {

   @Override
   public void wizyta (Komputery) {
      System.out.println ( "Wyświetlanie komputer.");
   }

   @Override
   public void wizyta (Mouse) {
      System.out.println ( "Wyświetlanie Mysz.");
   }

   @Override
   public void wizyta (klawiatura) {
      System.out.println ( "Wyświetlanie klawiatury.");
   }

   @Override
   public void wizyta (monitor Monitor) {
      System.out.println ( "Wyświetlanie Monitor.");
   }
}

Etap 5

UżyjComputerPartDisplayVisitorpokazać częśćkomputera.

VisitorPatternDemo.java

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

      ComputerPart komputerowy = new hardware ();
      computer.accept (New ComputerPartDisplayVisitor ());
   }
}

Etap 6

Sprawdź, czy wyjście.

Wyświetlanie Mysz.
Wyświetlanie klawiatury.
Wyświetlanie Monitor.
Wyświetlanie komputer.