什么变体更好? 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 的。