如何解决有没有办法以角度对服务进行分组?
我有一个稀疏项目,通过它的许多组件调用服务从 API 服务器获取数据。该服务处理从登录到彼此没有直接影响的多个其他功能。然而,将它们分开会给必须导入多个服务的构造函数带来麻烦。例如,这个:
@Component()
class ComponentExemple {
constructor(private back: BackendService) {}
}
会变成这样
@Component()
class ComponentExemple {
constructor(
private back: BackendService0,private back: BackendService1,private back: BackendService2,private back: BackendService3,...
) {}
}
我要问的是:有没有办法将多个服务组合成一个?(就像一个类可以扩展另一个父类,但在这种情况下,它需要扩展多个其他父类)。像这样:
@Injectable()
export class BackendService extends DataService1,DataService2,... { }
即使这是不可能的(我想这不太容易),是否有一些指导方针可以使构造函数参数不那么混乱?
我需要模块化此后端服务,以便更轻松地维护代码以及其他贡献者。
解决方法
您可以尝试使用 mixin 来实现某种多重扩展,但我建议改用组合:
@Injectable()
export class BackendService {
constructor(
public data1: DataService1,public data2: DataService2,public data3: DataService3,public data4: DataService4
) {}
}
@Component()
class ComponentExemple {
constructor(
private back: BackendService,) {}
ngOnInit() {
this.back.data1.getStuff();
}
}
,
您可以将您的单个服务声明为许多其他服务的实现。
@NgModule({
...
providers: [
{ provide: DataService1,useClass: BackendService},{ provide: DataService2,...
]
}
@Injectable()
export class BackendService implements DataService1,DataService2,... { }
注意我如何使用 implements
而不是 extends
。
因此,您的 DataService 表现为接口。 BackendService 不会继承任何方法,您需要像编写 Facade 一样编写所有方法。
然后就可以开始逐步重构,实现DataService1等等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。