Переход к конструктору или создание - PullRequest
0 голосов
/ 10 сентября 2018

Хотя оба варианта верны, но какой из следующих способов является рекомендуемым:

public class MyService(MyRepository ...) {
    ...
}

или

public class MyService() {
    myRepository = CreateMyRepository();
}

protected MyRepository CreateMyRepository() {
    ...
}

Первое означало бы, что это должен быть публичный получатель для хранилища, что противоречит цели, позволяющей только службе управлять хранилищем.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Первый. Это слабо связано. Это означает, что вы можете решить, как создать экземпляр MyRepository или даже предоставить подкласс для переопределения поведения. Это также помогает создавать экземпляр MyRepository только один раз и использовать один и тот же экземпляр в нескольких местах.

Также, смотрите больше Что такое внедрение зависимостей?

0 голосов
/ 10 сентября 2018

Это зависит от ваших требований, но я бы порекомендовал, как показано ниже пример.

Public Constructor полезен для внедрения зависимостей.

Защищенный конструктор можно использовать свой собственный класс и подклассы (полезно в Singleton Design Pattern ). Это также полезный конструктор для абстрактного класса.

Private Constructor может использоваться в своем собственном классе и гарантирует, что не должно быть более одного объекта (полезно в Singleton Design Pattern , Шаблон проектирования Builder ).

 class MyService {
      private MyRepository myRepository;

      public MyService(MyRepository myRepository){
          this.myRepository= myRepository;  

      }

      public String getMyRepository() { return myRepository; }

       public void setMyRepository(MyRepository myRepository)
       {    
       this.myRepository= myRepository;
      }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...