-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
Objetivo:
Permitir agregar dinámicamente responsabilidades adicionales a un objeto, proporcionando una alternativa flexible para extender la funcionalidad.
Motivación en el Proyecto:
En el proyecto, se manejan objetos como vehículos que tienen comportamientos específicos y a menudo se necesita añadir nuevas funcionalidades a estos objetos sin modificar su estructura original. Se añaden nuevas características fácilmente.
Vehicle (Interface): Define los métodos para los vehículos.
Métodos: moveForward(), moveBackward(), turnLeft(), turnRight(), startEngine(String key), stopEngine()
ConcreteComponent (Sedan, Truck): Implementaciones concretas de la interfaz Vehicle.
Métodos: Implementan todos los métodos de Vehicle y utilizan VehicleHelper para ciertas operaciones.
BaseDecorator: Clase abstracta que implementa la interfaz Vehicle y delega las llamadas a un objeto Vehicle envuelto (wrappee).
Campos: wrappee: Vehicle
Métodos: BaseDecorator(v: Vehicle), startEngine(String key), stopEngine(), moveForward(), moveBackward(), turnLeft(), turnRight()
ConcreteDecorator (ExtraFeatureDecorator): Implementación concreta del decorador que añade funcionalidades adicionales.
Métodos: addExtraFeature(), startEngine(String key), stopEngine(), moveForward(), moveBackward(), turnLeft(), turnRight()
Ventajas
Permite agregar nuevas funcionalidades a los objetos existentes sin modificar su código.
-
Las clases decoradoras pueden reutilizarse para agregar diferentes combinaciones de funcionalidades. -
Se pueden combinar múltiples decoradores para añadir varias características de manera dinámica y flexible.
SOLUCION UML
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
