Схема проектирования угловых сервисных инъекций с двумя тесно связанными сервисами - PullRequest
0 голосов
/ 06 июля 2018

У меня есть две службы, такие как Service1 и Service2.

Обе службы зарегистрированы в AppModule ( Root модуль).

Service2 вводится в Service1, как показано ниже.

@Injectable()
class Service2{
  constructor(){}
  public foo(){}
}

и

@Injectable()
class Service1{
  constructor(public service2:Service2){
    this.service2.foo()
  }
}

И для компонента требуется Service1 и функция foo () из Service2.

В этой связи у меня есть вопрос о design-pattern, внедряющем эти сервисы в компоненты . Я думаю, что есть два способа достичь моей цели.

Шаблон 1

@Component()
class Component{
  constructor(
    public service1:Service1
    ,public service2:Service2
  ){
    this.service2.foo()
  }
}

Шаблон 2

@Component()
class Component{
  constructor(
    public service1:Service1
  ){
    this.service1.service2.foo()
  }
}

Я думаю Шаблон 2 лучше из-за простота .

Так, какой из них лучше? Или есть еще какие-нибудь предложения?

1 Ответ

0 голосов
/ 06 июля 2018

Наблюдайте за своим паттерном 2, вы должны this.service1.service2.foo() каждый раз, когда вам нужно его использовать, для меня это дополнительная работа. В обоих шаблонах ваш сервис инициализирован, поэтому я предложу шаблон 1, так как this.service2.foo() намного эффективнее.

...