角度服务注入设计 - 模式与两个服务密切相关

问题描述 投票:1回答:1

我有两个服务,如Service1Service2

这两项服务都在AppModule(Root模块)中注册。

Service2注入Service1,如下所示。

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

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

而且,一个组件需要Service1Service2的函数foo()。

在这一点上,我有一个关于将这些服务注入组件的设计模式的问题。我认为有两种方法可以实现我的目标。

模式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因为简单而更好。

那么,哪一个更好?或者还有其他建议吗?

angular design-patterns angular-services
1个回答
0
投票

观察你的模式2,每次你必须使用它时你必须使用this.service1.service2.foo(),对我来说是额外的工作。在这两种模式中,您的服务都已初始化,因此我建议使用模式1,因为this.service2.foo()非常有效。

© www.soinside.com 2019 - 2024. All rights reserved.