Najlepszy samouczek odwiedzający W 2024 r. W tym samouczku możesz dowiedzieć się wprowadzenie,realizacja,
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.
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.
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.
Definiowanie interfejsu, który reprezentuje element.
ComputerPart.java
Klasa public interface ComputerPart { public void zaakceptować (ComputerPartVisitor computerPartVisitor); }
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); } }
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); }
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."); } }
UżyjComputerPartDisplayVisitorpokazać częśćkomputera.
VisitorPatternDemo.java
{public class VisitorPatternDemo public static void main (String [] args) { ComputerPart komputerowy = new hardware (); computer.accept (New ComputerPartDisplayVisitor ()); } }
Sprawdź, czy wyjście.
Wyświetlanie Mysz. Wyświetlanie klawiatury. Wyświetlanie Monitor. Wyświetlanie komputer.