Tôi muốn làm cho một lớp có thể kiểm tra bằng cách sử dụng tiêm phụ thuộc. Nhưng lớp tạo ra nhiều đối tượng trong thời gian chạy và truyền các giá trị khác nhau cho hàm tạo của chúng. Đây là một ví dụ đơn giản:
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");
}
}
(Có nhiều lớp con khác của Trình xác thực.)
Cách tốt nhất để thay đổi điều này là gì, vì vậy tôi có thể tiêm một đối tượng giả thay vì Xác thựcError?
Tôi có thể tạo một AbstractValidationErrorFactory và thay thế nhà máy. Điều này sẽ hoạt động, nhưng có vẻ như cuối cùng tôi sẽ tạo ra hàng tấn nhà máy nhỏ và giao diện nhà máy, cho mọi sự phụ thuộc của loại này. Có cách nào tốt hơn?