Propósito
Permite implantar o eliminar añadir de manera cómoda y flexible una funcionalidad de un componente sin cambiar su apariencia externa o su funcionamiento
Aplicabilidad
Use el patrón Decorator cuando se facilite añadir o quitar funcionalidades de los componentes durante la ejecución, cuando existan características que cambien autónomamente, que se tienen que utilizar dinámicamente y que se consigan combinar caprichosamente sobre un componente, se quiera realizar cambios activamente que sean claros al usuario, sin las restricciones que acarrea crear subclases.
Implementación
El patrón Adapter necesita de los siguientes elementos:
• Component: Representa el componente que contiene el comportamiento genérico.
• Decorator: Define los comportamientos estándar que se esperan de todos los decoradores.
• ConcreteDecorator: Cada subclase de Decorator necesita soportar modificaciones, cada Decorator puede definir mçetodos adicionales o también variables para ampliar el componente.
• Adaptee: La interfaz que define los métodos que serán adaptados. Esta interfaz permite que se cargue dinámicamente el Adaptee específico en tiempo de ejecución.
• ConcreteAdaptee: La implementación de la interfaz Adaptee. La clase que necesita ser adaptada para que pueda ser utilizada por el Framework.
Ventajas e Inconvenientes
Permite ajustar y ampliar el comportamiento de un objeto en tiempo de ejecución, además hace cómoda la ampliación del componente en el futuro ya que se pueden insertar los cambios por medio de nuevas clases.
La depuración y verificación se pueden hacer difíciles y la velocidad del sistema puede disminuir si el patrón Decorator no es bien diseñado.
Patrones Relacionados
• Adapter: Esta diseñado para cambiar la interfaz conservando igual funcionalidad, en cambio Decorador no cambia la interfaz sino la funcionalidad.
• Composite: Decorator puede ser percibido como una adaptación más simple de Composite ya que en vez de poseer una recopilación de componentes, este tiene un máximo de una referencia a un componente tercero.
miércoles, 27 de mayo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario