Java 什么';什么更好?SOLID-SRP及其接口

Java 什么';什么更好?SOLID-SRP及其接口,java,solid-principles,single-responsibility-principle,Java,Solid Principles,Single Responsibility Principle,什么变体更好?SOLID-SRP还是带接口的 class Some { private final IValidator validator; public Some(IValidator validator) { this.validator = validator; } public void doSomething() { if (validator.validate(data)); // do so

什么变体更好?SOLID-SRP还是带接口的

class Some {
    private final IValidator validator;
    public Some(IValidator validator) {
        this.validator = validator;
    }

    public void doSomething() {
        if (validator.validate(data));
            // do something
    }
}


验证器只使用一次。

通过编写
Validator Validator=new Validator()
实际上是在增加代码的耦合,这绝对不利于SOLID


就像@Kris在评论中所说的那样,最好的方法是使用接口而不是实际的实现——这实际上更符合多态性,而且在多态性之后,它已经是可靠的了。

两者都不能编译。。我想它是
私有最终IValidator验证器
专用最终验证器验证器
?均成功编译。我需要验证程序类的接口吗?SRP principe怎么说?您可能应该担心如何
private final Validator=new Validator()不起作用-_-哦,对不起。我确实改变了问题。我总是更喜欢界面。通过这种方式,您可以在以后轻松切换到该接口的不同实现。
class Some {
    private final Validator validator = new Validator();

    public void doSomething() {
        if (validator.validate(data));
            // do something
    }
}