Patrones de diseño de comportamiento: Interpreter

2 comentarios

Intención del patrón


  • Dado un lenguaje, define una representación para su gramática junto con un intérprete que usa la representación para interpretar sentencias en el lenguaje.
  • Asignar un dominio al lenguaje, el lenguaje a una gramática y la gramática a un diseño orientado a objeto jerárquico.


Ejemplo de problema

Una clase de problemas que ocurre repetidamente en un dominio bien definido y bien entendido. Si el dominio fue caracterizado con un lenguaje, entonces los problemas podrían ser fácilmente resueltos con un motor de "interpretación".

Patrones de diseño de comportamiento: Command

0 comentarios

Intensión del patrón

  • Encapsular una solicitud como un objeto, lo que permite parametrizar clientes con diferentes solicitudes, cola o registro de solicitudes, y soportar operaciones que se pueden deshacer.
  • Promover la "invocación de un método en un objeto" a ser un objeto "completo".
  • Un callback orientado a objeto.

Ejemplo de problema

Se necesita emitir peticiones a los objetos sin saber nada de la operación que se solicita o el receptor de la solicitud.

Patrones de diseño de comportamiento: Chain of Responsability

3 comentarios

Intención del patrón

  • Evitar el acoplamiento entre el emisor de una solicitud y quien la recibe dando a más de un objeto la posibilidad de atender la solicitud. Encadenamiento de objetos que reciben y pasan las solicitudes a lo largo de la cadena hasta un objeto que la maneja.
  • Lanzar y liberar solicitudes con una canalización de procesamiento individual que contiene muchos posibles "manejadores".
  • Una lista enlazada orientada a objeto con recursividad transversal.

Ejemplo de problema

Existe un potencialmente variable número de "manejadores", "elementos de procesamiento" o "nodos" y una gran cantidad de peticiones que deben ser manejadas. La necesidad de procesar eficientemente las solicitudes sin relacionar manera dura los manejadores y las precedencias; o mapeos entre la solicitud y el manejador.

Patrones de diseño estructurales: Proxy

0 comentarios

Intención del patrón

  • Proporcionar un sustituto o placeholder para otro objeto para controlar el acceso a él.
  • Utilizar un nivel extra de indirección para soportar un acceso distribuido, controlado o inteligente.
  • Agregar un wrapper y delegación para proteger el componente real de la complejidad excesiva.

Ejemplo de problema

Se necesita soportar objetos que están ávidos de recursos. A su vez, se requiere que dichos objetos no se instancien a menos que sean requeridos a su vez por un cliente.

Patrones de diseño estructurales: Private Class Data

0 comentarios

Intención del patrón


  • Controlar el acceso de escritura a los atributos de la clase.
  • Separar los datos de los métodos que los usan.
  • Encapsular la inicialización de datos de la clase.
  • Proporcionar la forma de que una vez asignado el valor de un atributo, no vuelva a modificarse.


Ejemplo de problema

Una clase que exponer sus atributos (variables de clase) para ser manipulados. Cuando dicha manipulación ya no es deseada, por ejemplo, tras la ejecución del constructor. El uso del patrón de diseño Private Class Data previene dicha manipulación no deseada.
Una clase puede tener atributos variables que no pueden ser declarados como final. Usando este patrón de diseño permite la asignación por única vez de este tipo de atributos.
La motivación por este patrón de diseño proviene del objetivo de proteger el estado de la clase reduciendo al mínimo la visibilidad de sus atributos.

Patrones de diseño estructurales: Flyweight

0 comentarios
Intención del patrón
  • Comparte para soportar un gran número de objetos de grano fino de manera eficiente.
  • La estrategia de GUI Motif de reemplazo de widgets pesados por widgets livianos.


Ejemplo de problema
El diseño de los objetos hasta los niveles más bajos de granularidad del sistema proporciona una óptima flexibilidad, pero puede resultar inapropiadamente costosa en términos de rendimiento y uso de memoria.
 
Copyright 2009 Programación SOLIDa
BloggerTheme by BloggerThemes | Design by 9thsphere