Latest web development tutorials

modo de proxy

En el modo proxy (Proxy patrón), una clase de funciones en nombre de otra clase. Este tipo de patrones de diseño pertenecen al modelo estructural.

En el modo proxy, creamos un objeto con un objeto existente con el fin de proporcionar una interfaz funcional con el mundo exterior.

introducción

Intención: proporcionar un agente para controlar el acceso a este objeto a otros objetos.

Resolución principal: el acceso directo al objeto causó problemas, tales como: el objeto al que desea acceder en la máquina remota.En los sistemas orientados a objetos, algunos objetos por alguna razón (por ejemplo, la creación de objetos es caro, o ciertas acciones requieren controles de seguridad o de acceso fuera del proceso), que dará a los usuarios acceso directo a la configuración del sistema o un montón de problemas, podemos añadir una capa de acceso a este objeto en el momento de acceso a este objeto.

Cuándo usar: cuando se quiere hacer algo para controlar el acceso a una clase.

Cómo solucionarlo: añadir capa intermedia.

El código de la llave: vínculo con las combinaciones de clases de proxy.

Ejemplos de aplicación: 1, Métodos abreviados de Windows en su interior.2, el cerdo fue a la Cuilan cambio del mono consecuencia, puede entenderse: la apariencia de alta Cuilan resumido, alta Azul Turquesa I y Mono implementa esta interfaz, cerdo acceso de alta Cuilan cuando no ve el Rey Mono, por lo que el Rey Mono es un alto Cuilan clase de proxy. 3, no necesariamente para comprar billetes de tren en la estación para comprar, también se puede ir a los puntos de venta. 4, un cheque o un certificado de depósito bancario es un fondos de la cuenta de proxy. Comprueba las transacciones en el mercado se utiliza en lugar de dinero en efectivo, y proporciona control de la cuenta de capital del emisor. 5, AOP primavera.

Ventajas: 1, responsabilidades claras.2, alta escalabilidad. 3, inteligente.

Desventajas: 1, como entre el cliente y el tema real de que el objeto proxy, por lo que algún tipo de modo de proxy pueden resultar en la solicitud de la velocidad de procesamiento más lento.2, para lograr modo proxy requiere trabajo adicional para lograr algún modo proxy es muy complejo.

Escenarios de uso: de acuerdo para dividir las responsabilidades, por lo general tienen los siguientes escenarios de uso: 1, Remote Agent.2. Las descripciones. 3, Copy-on-Write agentes. 4, la protección (Protect o Access) agente. 5, Cache Agent. 6, cortafuegos (Firewall) agente. 7, la sincronización (sincronización) agente. 8, las referencias inteligentes (Smart Referencia) agente.

Nota: La diferencia entre el 1 y el adaptador modos: Modelo de adaptador de cambios importantes previstos interfaz del objeto, y el modo de proxy no se pueden cambiar por agentes de la interfaz de la clase.La diferencia entre los 2 y los patrones de decorador: Decorador para mejorar la funcionalidad y modo de proxy se va a controlar.

realización

Vamos a crear una interfaz deimagenydeimplementación de la interfazImagenclases de entidad.ProxyImagees una clase de proxy, lo que reduce los objetos cargados huella de memoriaRealImage.

ProxyPatternDemo,que demuestran el uso de la claseProxyImagepara obtenerunobjetoimagenque se carga y se muestra en la demanda.

patrón Proxy diagrama UML

Paso 1

Crear una interfaz.

Image.java

Imagen interfaz pública {
   void display ();
}

Paso 2

Crear clase de entidad que implementa la interfaz.

RealImage.java

implementa clase pública RealImage imagen {

   nomArchivo cadena privada;

   RealImage pública (string filename) {
      this.fileName = nombre del archivo;
      loadFromDisk (nombre del archivo);
   }

   @ Override
   pantalla public void () {
      System.out.println ( "Viendo" + nombre de fichero);
   }

   private void loadFromDisk (string filename) {
      System.out.println ( "Carga" + nombre de fichero);
   }
}

ProxyImage.java

implementa clase pública ProxyImage imagen {

   realImage RealImage privada;
   nomArchivo cadena privada;

   ProxyImage pública (string filename) {
      this.fileName = nombre del archivo;
   }

   @ Override
   pantalla public void () {
      si (realImage == null) {
         realImage = new RealImage (nombre del archivo);
      }
      realImage.display ();
   }
}

paso 3

Cuando se le solicite, utiliceProxyImageconseguir objeto de claseRealImage.

ProxyPatternDemo.java

public class {ProxyPatternDemo
	
   principales argumentos (String []) {public static void
      image image = new ProxyImage ( "test_10mb.jpg");

      // Cargar la imagen del disco image.display (); 
      System.out.println ( "");
      // Las imágenes no se pueden cargar desde el disco image.display (); 	
   }
}

Paso 4

Verifique la salida.

Cargando test_10mb.jpg
Viendo test_10mb.jpg

Viendo test_10mb.jpg