2015-06-15 12 views
0

Какой вариант лучше? SOLID - SRP или один с интерфейсом?Какой вариант лучше? 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 используется один раз.

+0

Оба не компилируются. Я полагаю, что это «закрытый окончательный валидатор валидатора» и «закрытый окончательный валидатор валидатора»? – Gosu

+0

Оба компилируются успешно. Нужен ли мне интерфейс для класса Validator? Что говорит принцип SRP? –

+0

Возможно, вам стоит беспокоиться о том, как «закрытый окончательный Validator = new Validator();' не работает, прежде чем думать о SOLID .. -_- – Gosu

ответ

2

Написав Validator validator = new Validator(), вы фактически увеличиваете связь своего кода, что определенно против SOLID.

Как @Kris сказал в комментариях, лучший способ - использовать интерфейс вместо фактической реализации - это на самом деле больше соответствует полиморфизму и уже после него о SOLID.

 Смежные вопросы

  • Нет связанных вопросов^_^