Patron de diseño decorator

Patron de diseño decorator

patrón de diseño de decoradores python

Este artículo necesita citas adicionales para su verificación. Por favor, ayude a mejorar este artículo añadiendo citas de fuentes fiables. El material sin fuente puede ser cuestionado y eliminado.Buscar fuentes:  «Decorator pattern» – noticias – periódicos – libros – scholar – JSTOR (junio de 2013) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)

Este artículo está escrito como un manual o guía. Por favor, ayude a reescribir este artículo desde un punto de vista descriptivo y neutral, y elimine los consejos o instrucciones. (Abril 2020) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)

En la programación orientada a objetos, el patrón decorador es un patrón de diseño que permite añadir comportamiento a un objeto individual, de forma dinámica, sin afectar al comportamiento de otros objetos de la misma clase[1] El patrón decorador es a menudo útil para adherirse al Principio de Responsabilidad Única, ya que permite dividir la funcionalidad entre clases con áreas de interés únicas[2] El uso de decoradores puede ser más eficiente que la subclasificación, porque el comportamiento de un objeto puede ser aumentado sin definir un objeto completamente nuevo.

patrones de diseño responsivo

Este artículo necesita citas adicionales para su verificación. Por favor, ayude a mejorar este artículo añadiendo citas de fuentes fiables. El material sin fuente puede ser cuestionado y eliminado.Buscar fuentes:  «Decorator pattern» – noticias – periódicos – libros – scholar – JSTOR (junio de 2013) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)

->  Tipos de macros en access

Este artículo está escrito como un manual o guía. Por favor, ayude a reescribir este artículo desde un punto de vista descriptivo y neutral, y elimine los consejos o instrucciones. (Abril 2020) (Aprende cómo y cuándo eliminar este mensaje de la plantilla)

En la programación orientada a objetos, el patrón decorador es un patrón de diseño que permite añadir comportamiento a un objeto individual, de forma dinámica, sin afectar al comportamiento de otros objetos de la misma clase[1] El patrón decorador es a menudo útil para adherirse al Principio de Responsabilidad Única, ya que permite dividir la funcionalidad entre clases con áreas de interés únicas[2] El uso de decoradores puede ser más eficiente que la subclasificación, porque el comportamiento de un objeto puede ser aumentado sin definir un objeto completamente nuevo.

patrón de diseño decorador swift

Para utilizar el patrón decorador, se envuelve un objeto en otro objeto con el fin de extender el comportamiento. Todos los objetos implementan la misma interfaz, por lo que los decoradores pueden apilarse unos sobre otros, extendiendo el comportamiento aún más. Usando este patrón, puedes extender el comportamiento de un solo objeto, en lugar de extender el comportamiento de una clase en su totalidad (por ejemplo, usando subclases).

->  How to change your mind

¿Qué pasaría si quisiéramos extender el comportamiento de un solo Gigantosaurio para que pudiera rugir más fuerte? Podríamos envolver el objeto gigantosaurio inicial en un Decorador que se parezca a esto:

Y ahí lo tenemos, un patrón para extender/modificar el comportamiento de objetos individuales. Vale la pena mencionar que el método interno del objeto envuelto puede ser llamado antes o después del comportamiento extendido dentro de la implementación (aunque probablemente no queramos añadir signos de exclamación antes en nuestro ejemplo).

El ejemplo clásico de este patrón en acción, es la clase CryptoStream del framework .NET. La clase CryptoStream envuelve un Stream ordinario, pero extiende el comportamiento cifrando los datos antes de escribir en el Stream subyacente, y descifrando antes de leer de él.

patrón de diseño decorador c#

La forma habitual de añadir nuevas funcionalidades a un diseño existente es mediante la herencia. Pero, como ya hemos comentado, las extensiones dinámicas no están soportadas, las extensiones no son reutilizables y las extensiones múltiples son difíciles de combinar.

Los diseños basados en decoradores comparten las propiedades deseadas de los correspondientes diseños basados en herencia, sólo que las variaciones están bien modularizadas. Definimos una clase por cada variación de la funcionalidad base y decorativa.

->  Tutorial python desde cero

La clase común debe centrarse en la definición de una interfaz. Aplazar la definición de la representación de datos a las subclases. De lo contrario, la complejidad de Component puede hacer que los decoradores sean demasiado pesados para utilizarlos en cantidad.

A menudo se da el caso de que no es necesario definir una clase decoradora abstracta cuando se trata de una jerarquía de clases existente en lugar de diseñar una nueva. En este caso, puedes fusionar la responsabilidad del Decorador para reenviar las peticiones al componente en el Decorador concreto.

En este caso, el valor 3 se imprime en la pantalla. La llamada interna a add en la implementación de addAll en HashSet no vuelve al decorador s; por lo tanto, no aumenta el contador.

Entradas relacionadas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad