Skip to content

Implementing Decorator Design Pattern #3

@Levin514

Description

@Levin514

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

DecoratorPOO3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions