TypeScript和AngularJS - 静态方法 vs 服务

5

简略版:与Angular无关的静态基本功能 - 实现为AngularJS服务还是普通静态导出类/方法?

详细版:我已经使用TS编程约一个月了,因为我们正在重构我们的应用程序以使其能够使用TS(为了准备使用Angular 2.0)。 当我开始检查一些基本的angular服务时,我在想 - 由于实现静态类和方法非常容易 - 也许有些服务根本不需要作为服务来实现。 当然,任何与Angular有关的功能都必须作为服务实现。 例如,ColorConverter或ColorPicker - 我们应用程序中的angularjs服务今天实现了与Angular或任何共享外部资源无关的静态逻辑,可以轻松地用导出静态函数的静态模块进行替换。 我办公室中的某个人提出的一个反对Angular服务的论点是,稍后我们可以轻松地模拟这个逻辑。但为什么我要模拟不改变且不访问任何外部资源的静态逻辑呢? 期待您的回复。


3
我会说这取决于它有多小以及您是否确定永远不需要附加的依赖项或需要大幅修改它。使用依赖注入的服务可以简化测试,并使您能够在不重构无关代码的情况下添加依赖项。 - Michael Aaron Safyan
@MichaelAaronSafyan 是对的。Angular 服务易于测试和模拟。 - scokmen
好的,谢谢你们的回复 :) - DotnetProg
1个回答

4
问题在Java或其他语言中都是一样的。静态方法很难扩展和模拟,这就是为什么你应该使用服务而不是静态方法的原因。
例如,如果您使用静态方法来进行颜色转换,您将无法扩展其行为以支持应用程序中需要的新功能(例如支持另一种颜色范围等)。
以下答案为其他语言添加了一些元素,这些元素也适用于TypeScript。 Java静态方法的优缺点 何时在C#中使用静态类

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接