>_ devpefer // tech

$ cat /knowledge/strategy-validaciones-csharp.md

Patrón Strategy para validaciones en C#

Una forma limpia de separar comportamientos de validación sin llenar el código de condicionales.

Cuando una validación empieza a crecer y aparecen varios caminos distintos según el caso, suele ser buena idea separar el comportamiento.

Idea general

En lugar de acumular if y switch, cada estrategia encapsula una forma concreta de validar.

public interface IValidadorPedido
{
    bool EsValido(Pedido pedido);
}

public class ValidadorImporteMinimo : IValidadorPedido
{
    public bool EsValido(Pedido pedido) => pedido.Total > 0;
}

Cuándo tiene sentido

Tiene sentido cuando:

hay varias reglas intercambiables quieres probarlas por separado el comportamiento puede crecer con el tiempo