-
Notifications
You must be signed in to change notification settings - Fork 12
Description
Objetivo
Extender dinámicamente las funcionalidades de un objeto Vehicle sin modificar su estructura original, usando el patrón Decorator.
Motivación
En el proyecto, los vehículos (Vehicle) tienen comportamientos básicos. Se requiere agregar características adicionales (como sensores o modos de conducción) sin modificar el código existente. El patrón Decorator permite añadir estas funcionalidades de forma flexible y reutilizable.
Componentes
Vehicle (Interfaz):
Define los métodos básicos: moveForward(), moveBackward(), turnLeft(), turnRight(), startEngine(), stopEngine().ConcreteComponent (Sedan, Truck):
Implementan la interfaz Vehicle con comportamientos estándar.BaseDecorator (Abstract Class):
Envuelve un objeto Vehicle y delega las llamadas a este.ConcreteDecorator (ExtraFeatureDecorator):
Añade nuevas funcionalidades sobrescribiendo métodos como startEngine() y moveForward().
Ventajas
- Extensión sin Modificar: Se añaden nuevas características sin cambiar el código original.
- Flexibilidad: Permite combinar múltiples decoradores para añadir funcionalidades.
- Reutilización: Los decoradores funcionan con cualquier objeto Vehicle.