我有两个服务,如Service1
和Service2
。
这两项服务都在AppModule
(Root模块)中注册。
Service2
注入Service1
,如下所示。
@Injectable()
class Service2{
constructor(){}
public foo(){}
}
和
@Injectable()
class Service1{
constructor(public service2:Service2){
this.service2.foo()
}
}
而且,一个组件需要Service1
和Service2
的函数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因为简单而更好。
那么,哪一个更好?或者还有其他建议吗?
观察你的模式2,每次你必须使用它时你必须使用this.service1.service2.foo()
,对我来说是额外的工作。在这两种模式中,您的服务都已初始化,因此我建议使用模式1,因为this.service2.foo()
非常有效。