Saltar al contenido
Hugo Teijiz

Biblioteca

Tecnología e IA aplicadaGuía · Avanzado · 8 min · Actualizado: 2026-06-08

Strategy Pattern: cuando el if/else empieza a dirigir el negocio

Cómo usar Strategy para aislar reglas que cambian, reducir condicionales críticos y convertir decisiones de negocio en políticas explícitas.

  • #gof
  • #strategy
  • #arquitectura
  • #reglas-negocio

Resumen ejecutivo

  • Strategy ayuda cuando una regla variable empieza a dirigir el negocio desde condicionales dispersos.
  • La mejora no es estética: hace explícita una política de negocio testeable y reemplazable.

El problema real

El primer if no molesta. El décimo sí. Cuando pricing, permisos, scoring o validaciones cambian por segmento, el flujo principal empieza a acumular decisiones que nadie quiere tocar.

La señal de alerta es simple: para cambiar una regla de negocio hay que leer demasiado código que no representa esa regla.

Qué resuelve Strategy

Strategy define una interfaz común para varias políticas y permite elegir una en tiempo de ejecución. La decisión queda visible: qué política se usa y por qué.

No elimina la complejidad de negocio. La ubica en objetos chicos, testeables y reemplazables.

Cómo se ve en código

El checkout no necesita saber todos los casos. Solo necesita recibir una política con el contrato correcto.

checkout.ts
type DiscountStrategy = {
  apply(total: number): number;
};

class Checkout {
  constructor(private readonly discount: DiscountStrategy) {}

  totalAfterDiscount(total: number) {
    return this.discount.apply(total);
  }
}

const noDiscount: DiscountStrategy = { apply: (total) => total };
const launchDiscount: DiscountStrategy = { apply: (total) => total * 0.9 };

Cuándo usarlo

Strategy tiene sentido cuando la variabilidad ya es real:

  • Reglas de pricing o descuentos cambian por segmento.
  • Hay validaciones alternativas para distintos canales.
  • Un cálculo tiene múltiples algoritmos intercambiables.
  • Necesitás testear reglas sin levantar todo el flujo principal.

Cuándo evitarlo

Si solo hay dos ramas estables y no hay evidencia de cambio, un condicional claro puede ser mejor. Strategy agrega nombres, archivos y composición; ese costo debe comprar flexibilidad real.

Evidencia relacionada

FAQ

¿Strategy reemplaza todos los if?
No. Reemplaza condicionales donde la variación representa una política o algoritmo con vida propia. Un if simple y estable puede ser la mejor opción.
¿Cuál es la diferencia entre Strategy y State?
Strategy cambia el algoritmo elegido. State cambia el comportamiento porque el objeto está en otro estado interno.

Artículos relacionados