2015-04-08 2 views
1

Я хотел бы спросить, кто несет ответственность за настройку состояния введенной зависимости?Установка впрыска и настройка состояния

Например, если класс A зависит от класса B, является ли ответственность за экземпляр B за экземпляр A, или это должно быть сделано где-то в другом месте? Зачем?

Мои вопросы гораздо более общие, но я поставил конкретную ситуацию здесь: У меня есть класс контекста, который обрабатывает взаимодействия и состояния, выполненные с заданным графиком, например. вы можете переключаться между двумя сериями. Однако этот класс также настраивает внешний вид и отображаемые данные диаграммы, делегируя их другим (введенным) классам. В настоящее время конструктор контекста настраивает свое состояние зависимостей на основе его параметров конструктора (например: выделите одну точку на графике, расскажите, какие серии отображать и т. Д.). Я не уверен, что этот дизайн хорош и хотел бы получить более глубокое понимание правильного пути. Язык программирования - Javascript (если это имеет значение).

Спасибо, Peter

ответ

1

когда класс А зависит от класса В, ответственность Экземпляр для установки экземпляра B или это должно быть сделано где-то еще?

Если А будет ответственно в настройке B, это сделало бы нарушить Dependency Inversion Principle (DIP), который говорит:

модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависят от абстракций.

DIP является движущей силой шаблона инъекции зависимостей.

Но если A не может нести ответственность за создание B, кто такой? Ответ на этот вопрос: Composition Root:

Композиция Корень (предпочтительно) уникальное местоположение в приложении , где модули состоят вместе.

Использование композиции Корень - это единственный способ, с помощью которого вы можете сохранить как A, так и B (и все остальное на графике) без зависимости от другого модуля.

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