Latest web development tutorials

visitor

En el patrón de visitante (visitor), utilizamos una clase de visitantes, cambia las clases de elementos algoritmo de ejecución. De esta manera, con la implementación del algoritmo puede ser que se cambia un elemento de visitante. Este tipo de patrones de diseño pertenecen los patrones de comportamiento. Según modelo, objeto elemento ha aceptado el objetivo de los visitantes, por lo que los visitantes pueden manejar objetos que operan elemento objeto.

introducción

Propósito: La estructura principal de los datos y los datos de separación de la manipulación.

Principalmente para resolver: una estructura dedatos estable y variable de acoplamiento problema operativo.

Cuándo utilizar: la necesidad de una estructura de destino de los objetos en muchas acciones diferentes y no relacionados, pero estas acciones tienen que evitar la "contaminación" de la clase de estos objetos, el uso de los visitantes a estos paquetes a la clase.

Cómo corregir: se accede dentro del nivel así como una recepción de visitantes extranjeros para proporcionar la interfaz.

El código de la llave: la clase de base de datos que tiene un método para aceptar visitantes, en sí misma una referencia a los visitantes entrantes.

Ejemplo de aplicación: Usted es un huésped en la casa de un amigo, usted es un visitante, un amigo acepta su visita a través de la descripción de su amigo, a continuación, la descripción de un amigo para hacer un juicio, que es el patrón de visitante.

Ventajas: 1, de acuerdo con el principio de la responsabilidad individual.2, excelente escalabilidad. 3, la flexibilidad.

Desventajas: 1, los elementos específicos del visitante anunciaron detalles de una violación del principio de Demeter.2, los elementos específicos del cambio más difícil. 3, en la violación del principio de dependencia Inversion, se basan en una clase específica que no se basa en la abstracción.

Escenarios de uso: 1, el objeto que corresponde a la estructura de clases de objetos raramente cambia, pero a menudo tienen que definir una nueva operación en esta estructura del objeto.2, la necesidad de una estructura de destino de los objetos en muchas acciones diferentes y no relacionados, pero estas acciones necesitan para evitar la "contaminación" de la clase de estos objetos, que no queremos modificar estas clases cuando se agrega una nueva operación.

Nota: Los visitantes pueden ser unificados función, se puede hacer un informe, la interfaz de usuario, interceptar y filtrar.

realización

Vamos a crear una definición de interfaz de operaciónComputerPartaceptable.Teclado,ratón, monitor yelordenador alcanzar la interfazComputerPartclases de entidad. Definiremos otraComputerPartVisitor interfaz,que define el tipo de operación a los visitantes. Usode la computadoraa los visitantes de las entidades para tomar las medidas apropiadas.

VisitorPatternDemo,que demuestran el uso dela computadoradeclase,claseComputerPartVisitorpara demostrar el uso de la visitor.

visitor diagrama UML

Paso 1

Definir una interfaz que representa el elemento.

ComputerPart.java

ComputerPart clase de interfaz pública {
   public void aceptar (ComputerPartVisitor computerPartVisitor);
}

Paso 2

Crear extiende por encima de las clases de entidad de clase.

Keyboard.java

Teclado clase pública implementa ComputerPart {

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

Monitor.java

Monitor de clase pública implementa ComputerPart {

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

Mouse.java

clase pública implementa ratón ComputerPart {

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

Computer.java

Ordenador clase pública implementa ComputerPart {
	
   ComputerPart [] partes;

   Ordenador pública () {
      piezas = new ComputerPart [] {nuevo ratón (), nuevo teclado (), el nuevo monitor ()};		
   } 


   @ Override
   public void aceptar (ComputerPartVisitor computerPartVisitor) {
      for (int i = 0; i <parts.length; i ++) {
         partes [i] .Accept (computerPartVisitor);
      }
      computerPartVisitor.visit (this);
   }
}

paso 3

Definir una interfaz de representación visitante.

ComputerPartVisitor.java

ComputerPartVisitor interfaz pública {
	visita pública sin efecto (ordenador PC);
	visita public void (ratón ratón);
	visita public void (Teclado Teclado);
	visita public void (monitor Monitor);
}

Paso 4

Visitantes entidad creada para alcanzar la clase mencionada.

ComputerPartDisplayVisitor.java

ComputerPartDisplayVisitor clase pública implementa ComputerPartVisitor {

   @ Override
   visita pública sin efecto (ordenador PC) {
      System.out.println ( "Viendo ordenador.");
   }

   @ Override
   visita pública void (ratón ratón) {
      System.out.println ( "Viendo ratón.");
   }

   @ Override
   visita public void (Teclado Teclado) {
      System.out.println ( "Viendo teclado.");
   }

   @ Override
   visita public void (monitor Monitor) {
      System.out.println ( "Viendo Monitor.");
   }
}

paso 5

UtiliceComputerPartDisplayVisitorpara mostrar parte de lacomputadora.

VisitorPatternDemo.java

public class {VisitorPatternDemo
   principales argumentos (String []) {public static void

      ComputerPart equipo = nuevo ordenador ();
      computer.accept (nueva ComputerPartDisplayVisitor ());
   }
}

paso 6

Verifique la salida.

Viendo del ratón.
Viendo del teclado.
Viendo del monitor.
Viendo del ordenador.