Il miglior tutorial modello Visitor Nel 2024, in questo tutorial puoi imparare introduzione,realizzazione,
Nel modello visitatore (Pattern Visitor), usiamo una classe visitatore, cambia le classi di elementi algoritmo esecuzione. In questo modo, con l'implementazione dell'algoritmo può essere un elemento di visitatore viene modificato. Questo tipo di modelli di progettazione appartengono modelli comportamentali. Secondo motivo, elemento oggetto ha accettato il target di visitatori, così i visitatori possono gestire gli oggetti che operano oggetto elemento.
Intento: La struttura principale dei dati e dei dati di separazione manipolazione.
Principalmente per risolvere: una struttura didati stabile e problemi di accoppiamento di funzionamento variabile.
Quando utilizzare: la necessità di una struttura di destinazione degli oggetti in molte azioni differenti e indipendenti, ma tali azioni devono evitare "inquinamento" della classe di questi oggetti, l'uso di visitatori a questi pacchetti alla classe.
Come risolvere: la classe si accede all'interno di una reception aperta di visitatori stranieri per fornire l'interfaccia.
Il codice chiave: la classe di base di dati, che ha un metodo di accettare i visitatori, per sé un riferimento per i visitatori in arrivo.
Esempio di applicazione: Tu sei un ospite a casa di un amico, sei un visitatore, un amico accetta la vostra visita attraverso la descrizione del tuo amico, poi la descrizione di un amico per dare un giudizio, che è il modello visitatore.
Vantaggi: 1, in linea con il principio di responsabilità singolo.2, eccellente scalabilità. 3, flessibilità.
Svantaggi: 1, gli elementi specifici del visitatore annunciato i dettagli di una violazione del principio di Demetra.2, gli elementi specifici del cambiamento più difficile. 3, in violazione del principio di inversione di dipendenza, si basano su una classe specifica che non si basa su un'astrazione.
scenari di utilizzo: 1, l'oggetto corrispondente alla struttura di classe oggetto cambia raramente, ma spesso la necessità di definire una nuova operazione su tale struttura oggetto.2, la necessità di una struttura di destinazione di oggetti in molte azioni diverse e non correlate, ma queste azioni devono evitare di "inquinamento" della classe di questi oggetti, non vogliamo modificare queste classi quando si aggiunge una nuova operazione.
Nota: I visitatori possono essere unificati funzione, si può fare un report, interfaccia utente, intercettare e filtrare.
Creeremo una definizione di interfaccia di funzionamentoComputerPartaccettabile.Tastiera,mouse, monitor ecomputerraggiungere l'interfacciaComputerPartclassi di entità. Definiamo un'altraComputerPartVisitor interfaccia,che definisce il tipo di operazione da visitatori.Computerutilizzare visitatori entità a prendere i provvedimenti opportuni.
VisitorPatternDemo,dimostriamo l'uso di Classecomputer,classeComputerPartVisitorper illustrare l'utilizzo del modello visitatore.
Definire un'interfaccia che rappresenta l'elemento.
ComputerPart.java
classe di interfaccia pubblica ComputerPart { public void accettare (ComputerPartVisitor computerPartVisitor); }
Creare estende le classi di entità sopra di classe.
Keyboard.java
public class tastiera implementa ComputerPart { @Override public void accettare (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (questo); } }
Monitor.java
public class Monitor implementa ComputerPart { @Override public void accettare (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (questo); } }
Mouse.java
public class mouse implementa ComputerPart { @Override public void accettare (ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit (questo); } }
Computer.java
public class Computer implementa ComputerPart { ComputerPart [] di ricambio; pubblico Computer () { parti = new ComputerPart [] {nuovo mouse (), nuova tastiera (), il nuovo Monitor ()}; } @Override public void accettare (ComputerPartVisitor computerPartVisitor) { for (int i = 0; i <parts.length; i ++) { parti [i] Accetti (computerPartVisitor); } computerPartVisitor.visit (questo); } }
Definire un'interfaccia di rappresentanza ospite.
ComputerPartVisitor.java
interfaccia pubblica ComputerPartVisitor { pubblico visita vuoto (Computer computer); visita public void (Mouse); visita public void (Keyboard tastiera); visita public void (monitor Monitor); }
Ospiti entità creati per ottenere la classe di cui sopra.
ComputerPartDisplayVisitor.java
public class ComputerPartDisplayVisitor implementa ComputerPartVisitor { @Override pubblico visita vuoto (Computer computer) { System.out.println ( "Visualizzazione del computer."); } @Override pubblico visita vuoto (Mouse) { System.out.println ( "Visualizzazione del mouse."); } @Override visita public void (Keyboard tastiera) { System.out.println ( "Visualizzazione della tastiera."); } @Override visita public void (monitor Monitor) { System.out.println ( "Visualizzazione Monitor."); } }
UtilizzareComputerPartDisplayVisitorper mostrare una parte delcomputer.
VisitorPatternDemo.java
public class VisitorPatternDemo { Main (string [] args) {public static void ComputerPart del computer = nuovo computer (); computer.accept (nuova ComputerPartDisplayVisitor ()); } }
Verifica uscita.
Visualizzazione del mouse. Visualizzazione della tastiera. Visualizzazione Monitor. Visualizzazione del computer.