Solución con strategy pattern + tests