Introduccion:
Añade dinamicamente nuevas responsabilidades a un objeto, proporcionando una alternativa flexible a la herencia para extender funcionalidad.
Nombre del patron:
Decorator (wrapper)
Clasificacion del patron:
Estructural
Intencion:
Proporcionar una forma flexible de introducir o eliminar funcionalidad de un componente sin modificar su apariencia externa o su funcion.
Motivacion:
A veces se desea adicionar responsabilidades a un objeto pero no a toda la clase. Las responsabilidades se pueden adicionar por medio de los mecanismos de Herencia, pero este mecanismo no es flexible porque la responsabilidad es adicionada estáticamente. La solución flexible es la de rodear el objeto con otro objeto que es el que adiciona la nueva responsabilidad. Este nuevo objeto es el Decorator.
Estructura:
Participantes:
Component: Define la interface de los objetos a los que se le puede adicionar responsabilidades dinamicamente.
ConcreteComponent: Define el objeto al que se le puede adicionar una responsabilidad.
Decorator: Mantiene una refeencia al objeto Component y define una interface de acuerdo con la interface de Component.
ConcreteDecorator: Adiciona la responsabilidad al componente.
Añade dinamicamente nuevas responsabilidades a un objeto, proporcionando una alternativa flexible a la herencia para extender funcionalidad.
Nombre del patron:
Decorator (wrapper)
Clasificacion del patron:
Estructural
Intencion:
Proporcionar una forma flexible de introducir o eliminar funcionalidad de un componente sin modificar su apariencia externa o su funcion.
Motivacion:
A veces se desea adicionar responsabilidades a un objeto pero no a toda la clase. Las responsabilidades se pueden adicionar por medio de los mecanismos de Herencia, pero este mecanismo no es flexible porque la responsabilidad es adicionada estáticamente. La solución flexible es la de rodear el objeto con otro objeto que es el que adiciona la nueva responsabilidad. Este nuevo objeto es el Decorator.
Estructura:
Participantes:
Component: Define la interface de los objetos a los que se le puede adicionar responsabilidades dinamicamente.
ConcreteComponent: Define el objeto al que se le puede adicionar una responsabilidad.
Decorator: Mantiene una refeencia al objeto Component y define una interface de acuerdo con la interface de Component.
ConcreteDecorator: Adiciona la responsabilidad al componente.
Jimmy esta muy claro, gracias!
ResponderEliminarpor cierto, estaria bueno un ejemplo tipo los de wikipedia pero con algun caso real
ResponderEliminar