Должен ли установщик делегата быть в интерфейсе?

StackOverflow https://stackoverflow.com/questions/894571

  •  23-08-2019
  •  | 
  •  

Вопрос

У нас есть много объектов с таким дизайном:Интерфейс и несколько реализаций, а также использование нескольких объектов по композиции.Пример:Foo реализует ifoo и имеет бар -объект, который реализует Ibar Foo, также имеет метод Setbar (Ibar Bar) для инъекции зависимости.

Мой вопрос:установщик не должен быть в интерфейсе?(Для тестирования, издевательств...Я застрял !)

Это было полезно?

Решение

Если вы используете полиморфизм, т. е. вызываете установщик типа интерфейса, то, очевидно, он вам нужен в интерфейсе.

Другие советы

Иметь сеттер в интерфейсе только для насмешек и тестирования — нехорошо.Таким образом, вы разрешаете пользователям этого интерфейса использовать произвольные компоненты набора, даже если свойства этого объекта, вероятно, не должны быть изменены после создания.Интерфейс не должен раскрывать, как построить объект.

Либо внедрите Bar в Foo, используя сеттер Injection.В контексте, где Foo не может существовать без Bar, было бы более уместно внедрить в Bar конструктор.

Далее читайте: Типы внедрения зависимостей

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top