Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Patrones de Diseño de Comportamiento

Strategy

Encapsular familia de algoritmos intercambiables

Universidad Nacional de Rio Negro - Sede Andina

Definición

El patrón Strategy (Estrategia) es un patrón de diseño de comportamiento que define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables.

Este patrón permite que el algoritmo varíe independientemente de los clientes que lo utilizan, delegando la ejecución del comportamiento a un objeto de estrategia específico.

Origen e Historia

Formalizado por el GoF en 1994, el Strategy surgió como una respuesta a la rigidez de la herencia para variar comportamientos. Antes de este patrón, si queríamos que una clase tuviera diferentes comportamientos, solíamos crear subclases para cada variante. El Strategy propone usar composición en lugar de herencia, permitiendo cambiar el comportamiento incluso en tiempo de ejecución.

Motivación

La motivación principal es el cumplimiento del Principio de Abierto/Cerrado. Queremos ser capaces de añadir nuevos algoritmos o formas de hacer algo sin tener que tocar las clases que usan esos algoritmos.

Contexto

Cuando aplica

Cuando no aplica

Consecuencias de su uso

Positivas

Negativas

Alternativas

Estructura

Diagramas

Diagrama de Clases

Diagrama de Secuencia

Ejemplos

/**
 * Interfaz Strategy.
 */
public interface EstrategiaPago {
    void pagar(int monto);
}

/**
 * Estrategia Concreta A.
 */
public class PagoTarjeta implements EstrategiaPago {
    @Override
    public void pagar(int monto) {
        System.out.println("Pagando $" + monto + " con Tarjeta de Crédito.");
    }
}

/**
 * El Contexto: Un Carrito de Compras.
 */
public class Carrito {
    private EstrategiaPago metodo;
    
    public void setMetodoPago(EstrategiaPago m) { this.metodo = m; }
    
    public void realizarPago(int total) {
        metodo.pagar(total);
    }
}

Ejercicios

Resumen

El patrón Strategy es el patrón de la “intercambiabilidad”. Al separar el qué se hace del cómo se hace, nos otorga una arquitectura limpia donde los algoritmos son piezas modulares que pueden evolucionar, testearse y reemplazarse sin afectar la estabilidad del resto del sistema.

Próximo paso

Para seguir, conviene pasar a el material siguiente, donde el recorrido continúa sobre esta base.