Quiero hacer una clase comprobable usando inyección de dependencia. Pero la clase crea múltiples objetos en tiempo de ejecución y pasa diferentes valores a su constructor. Aquí hay un ejemplo simplificado:
public abstract class Validator {
private ErrorList errors;
public abstract void validate();
public void addError(String text) {
errors.add(
new ValidationError(text));
}
public int getNumErrors() {
return errors.count()
}
}
public class AgeValidator extends Validator {
public void validate() {
addError("first name invalid");
addError("last name invalid");
}
}
(Hay muchas otras subclases de Validator).
¿Cuál es la mejor manera de cambiar esto, para poder inyectar un objeto falso en lugar de ValidationError?
Puedo crear un AbstractValidationErrorFactory e inyectar la fábrica en su lugar. Esto funcionaría, pero parece que terminaré creando toneladas de pequeñas fábricas e interfaces de fábrica, para cada dependencia de este tipo. ¿Hay una mejor manera?