Внедрение зависимостей приводит к тому, что основной метод заполняется новыми ключевыми словами - PullRequest
1 голос

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Чтобы расширить комментарий от @Nkosi, new должен куда-то звонить. Объекты создаются путем вызова их конструкторов, и внедрение зависимостей этого не меняет. см. ключевые слова new; но они просто скрыты, а не устранены.

Если вы применяете свой собственный DI, вы сами реализуете композицию root (которая будет заполнена ключевыми словами new). Ваш метод main - это как раз то место, где можно реализовать композицию root.

Обратите внимание на преимущество шаблона root композиции в том, что он объединяет создание экземпляров объекта (и, следовательно, new ключевых слов) в единое место. Если вы думаете о создании объектов как о «единой ответственности», то объединение этой работы в main сделает вашу кодовую базу более связной.

Никакой шаблон не устранит необходимость new поднять объекты. Внедряя зависимости через конструкторы, вы правильно выполняете DI.

0 голосов
/ 19 июня 2020

Вот некоторые из вещей, которые вы можете сделать:

  1. Создайте экземпляр каждого объекта в отдельной строке. Это улучшит читаемость вашего кода.
  2. Используйте шаблон создания «Builder» для извлечения конструкции объекта из основного метода в класс «Builder», где вы можете лучше управлять им. https://refactoring.guru/design-patterns/builder
  3. Используйте некоторые из фреймворков Io C контейнера / внедрения зависимостей. Основной модуль из Spring framework содержит хорошее решение. Также у вас есть фреймворк "guice" от Google и многое другое.
...