什么变体更好?固体 - SRP 还是带接口的那个?
class Some {
private final IValidator validator;
public Some(IValidator validator) {
this.validator = validator;
}
public void doSomething() {
if (validator.validate(data));
// do something
}
}
或
class Some {
private final Validator validator = new Validator();
public void doSomething() {
if (validator.validate(data));
// do something
}
}
验证器使用一次。
通过编写Validator validator = new Validator()
,您实际上增加了代码的耦合性,这绝对是反对 SOLID 的。
就像@Kris评论中所说的那样,最好的方法是使用接口而不是实际的实现 - 这实际上更符合多态性,并且在它之后已经是关于 SOLID 的。