什么变体更好? SOLID - SRP 和接口
What's variant better? SOLID - SRP and interfaces
哪种变体更好? SOLID - 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 的。
哪种变体更好? SOLID - 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 的。