Skip to content

Implementar patron Strategy #9

@faviofloresdev

Description

@faviofloresdev

Resumen:

Implementar un ejercicio en Java para aplicar el patrón de diseño Strategy.

Descripción:

Se requiere desarrollar un ejemplo práctico en Java que implemente el patrón Strategy, el cual permite definir una familia de algoritmos, encapsularlos y hacerlos intercambiables en tiempo de ejecución, favoreciendo la flexibilidad y evitando el uso excesivo de condicionales.

Requerimientos:

  • Crear una interfaz Strategy con un método execute().
  • Implementar varias estrategias concretas (ConcreteStrategyA, ConcreteStrategyB, etc.) que definan comportamientos diferentes.
  • Crear una clase Context que reciba una Strategy y ejecute su comportamiento.
  • Desarrollar una clase Main para demostrar cómo se puede cambiar la estrategia en tiempo de ejecución.

Contexto sugerido:

Un sistema de procesamiento de pagos, donde:

  • La interfaz PaymentStrategy define el método pay(double amount).
  • Estrategias concretas como CreditCardPayment, PaypalPayment, CryptoPayment.
  • La clase ShoppingCart (Context) permite aplicar diferentes métodos de pago sin cambiar su lógica interna.

Criterios de Aceptación:

  • El sistema debe permitir cambiar la estrategia en tiempo de ejecución.
  • Cada estrategia debe ejecutar su propio comportamiento de forma independiente.
  • El ejemplo debe ejecutarse en consola mostrando los diferentes resultados según la estrategia seleccionada.

Diagrama

classDiagram
    class Strategy {
        +execute()
    }

    class ConcreteStrategyA {
        +execute()
    }

    class ConcreteStrategyB {
        +execute()
    }

    class Context {
        -Strategy strategy
        +setStrategy(Strategy s)
        +executeStrategy()
    }

    Strategy <|.. ConcreteStrategyA
    Strategy <|.. ConcreteStrategyB
    Context --> Strategy

Loading

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions