En la programación de computadora, el patrón del poder del es un patrón del diseño de software.

Un poder, en su forma más general, es una clase que funciona como un interfaz a otra cosa. La otra cosa podía ser cualquier cosa: una conexión de red, un objeto grande en memoria, un archivo, o un cierto otro recurso que es costoso o imposible duplicar.

Un ejemplo bien conocido del patrón del poder es una referencia que cuenta el objeto del indicador del .

En las situaciones donde las copias múltiples de un objeto complejo deben existir el patrón del poder se puede adaptar para incorporar el patrón Flyweight para reducir la huella de la memoria del uso. Típicamente un caso del objeto complejo se crea, y se crean los objetos múltiples del poder, que contienen una referencia al solo objeto complejo original. Cualquier operación se realizó en los poderes se remite al objeto original. Todos los casos del poder están una vez fuera de alcance, la memoria del objeto complejo pueden ser desasignados.

Los tipos de patrón del poder incluyen:
Poder alejado : Proporciona una referencia a un objeto situado en un diverso espacio de dirección en el mismo o la diversa máquina.
Poder virtual : Permite la creación de un objeto intensivo de la memoria a pedido. El objeto no será creado hasta que sea realmente necesario. (Véase también la evaluación perezosa .)
el del Copia-en-escribe el poder de : Difiere el copiado (reproducción) de un objeto de la blanco hasta required por acciones del cliente. Éste es realmente un caso especial del " proxy" virtual; patrón.
Poder de la protección del (acceso): Provee de diversos clientes diversos niveles de acceso a un objeto de la blanco.
poder del escondrijo del : Proporciona el almacenamiento temporal de los resultados de las operaciones costosas de la blanco de modo que los clientes múltiples puedan compartir los resultados. (Véase también el Memoization .)
poder del cortafuego del : Protege blancos contra malos clientes (o viceversa).
Poder de la sincronización del : Proporciona el control de concurrencia sobre un objeto asincronizado de la blanco.
Poder elegante de la referencia del : Proporciona acciones adicionales siempre que se refiera un objeto de la blanco, por ejemplo la cuenta del número de referencias al objeto.

Diagrama

Ejemplos

Poder virtual (en Java)

El ejemplo siguiente de Java ilustra el " proxy" virtual; patrón. La salida del programa es: Cargamento HiRes_10MB_Photo1 Exhibición de HiRes_10MB_Photo1 Cargamento HiRes_10MB_Photo2 Exhibición de HiRes_10MB_Photo2 Exhibición de HiRes_10MB_Photo1

La clase de ProxyImage se utiliza para retrasar la operación costosa de cargar un archivo de disco hasta el resultado de esa operación es realmente necesaria. Si el archivo nunca es necesario, después la carga costosa se ha eliminado total. lang=" del importación java.*; imagen del interfaz { displayImage vacío del público (); } la clase RealImage ejecuta imagen { nombre de fichero privado de la secuencia; RealImage público (nombre de fichero de la secuencia) { this.filename = nombre de fichero; loadImageFromDisk (); }

loadImageFromDisk vacío privado () { Operación potencialmente costosa de // //… System.println (" " del cargamento; +filename); }

displayImage vacío del público () {System.println (" Exhibición del " +filename); } } la clase ProxyImage ejecuta imagen { nombre de fichero privado de la secuencia; imagen privada de la imagen; ProxyImage público (nombre de fichero de la secuencia) {this.filename = nombre de fichero; } displayImage vacío del público () { si (falta de información del == de la imagen) { imagen = nuevo RealImage (nombre de fichero); carga de // solamente a pedido } image.displayImage (); } } clase ProxyExample { cañería pública del vacío de los parásitos atmosféricos (args de la secuencia) { Imágenes de List = nuevo ArrayList (); images.add (nuevo ProxyImage (" HiRes_10MB_Photo1") ); images.add (nuevo ProxyImage (" HiRes_10MB_Photo2") ); images.add (nuevo ProxyImage (" HiRes_10MB_Photo3") ); images.displayImage (); carga de // necesaria images.displayImage (); carga de // necesaria images.displayImage (); // ningún cargamento necesario; hecho ya ¡// la tercera imagen nunca será cargado - tiempo ahorrado! } }

Poder de la protección (en C#)

En este ejemplo de C#, el RealClient almacena un número de cuenta. Solamente los usuarios que saben una contraseña válida pueden tener acceso a este número de cuenta. El RealClient es protegido por un ProtectionProxy que sepa la contraseña. Si un usuario quiere conseguir un número de cuenta, primero el poder pide que el usuario authentique; solamente si el usuario entró una contraseña correcta hace el poder invoca el RealClient para conseguir un número de cuenta para el usuario.

En este ejemplo, el thePassword es la contraseña correcta. lang=" del usar sistema;

namespace ConsoleApplicationTest.ProtectionProxyPattern { interfaz público IClient { secuencia GetAccountNo (); } clase pública RealClient: IClient { accountNo = " privados de la secuencia; 12345" ; RealClient público () { Console.WriteLine (" RealClient: Initialized"); } secuencia pública GetAccountNo () { Console.WriteLine (" AccountNo de RealClient: " + accountNo); accountNo de vuelta; } } clase pública ProtectionProxy: IClient { contraseña privada de la secuencia; //password para conseguir secreto Cliente de RealClient; ProtectionProxy público (pwd de la secuencia) { Console.WriteLine (" ProtectionProxy: Initialized"); contraseña = pwd; cliente = nuevo RealClient (); } // authentica a usuario y vuelve el número de cuenta secuencia pública GetAccountNo () { Console.Write (" Contraseña: "); tmpPwd de la secuencia = Console.ReadLine (); si (contraseña del == del tmpPwd) { client.GetAccountNo de vuelta (); } { Console.WriteLine (" ProtectionProxy: ¡Contraseña ilegal! "); " de vuelta; " ; } } } clase ProtectionProxyExample { cañería pública del vacío de los parásitos atmosféricos (args de la secuencia) { Cliente de IClient = nuevo ProtectionProxy (" thePassword"); Console.WriteLine (); Console.WriteLine (" cañería recibida: " + client.GetAccountNo ()); Console.WriteLine (" \ nPress cualquie llave para continuar .Read (); } } }

Ver también

Patrón compuesto
Patrón del decorador
Inicialización perezosa

.

  • Zenithic
  • Rafael Márquez (boxer)
    Random links:El municipio de Eden, Michigan | Steven Van Zandt | Tela de algodón | Lista de publicaciones importantes en sociología | Maria que coloca a Smith

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">