2016-08-18 81 views
3

TL; DR:静态基本功能,不得与angular做任何事情 - 作为AngularJS服务与纯静态导出的类/方法实现?Typescript和AngularJS - 静态方法vs服务

长版本:我已经在TS中编程了大约一个月,因为我们正在重构我们的应用程序以与TS(准备角2.0)一起工作。 当我开始经历一些基本的角度服务时,我在想 - 因为实现静态类和方法非常容易 - 也许我们的某些服务根本不应该是服务。 当然,任何与角度有关的功能我都必须作为服务来实现。例如,ColorConverter或ColorPicker - 今天我们的应用程序中的angularjs服务实现了静态逻辑,不会改变或与角度或任何共享的外部资源有关 - 可以很容易地用导出静态函数的静态模块替换。 我的办公室里有人提出了角度服务的一个论点是,稍后我们可以轻松地嘲笑这种逻辑。但是,为什么我要模拟静态逻辑不改变,不访问任何外部资源? 便士为您的想法。

+3

我会说,这取决于你是它有多小,以及如何确保你将永远不会有额外的依赖或需要大幅度修改。使用具有依赖注入的服务可以简化测试,并让您在不重构不相关代码的情况下添加依赖关系的自由度更大。 –

+0

@MichaelAaronSafyan是对的。角度服务很容易测试和嘲笑。 – scokmen

+0

好的,谢谢你的回复:) – DotnetProg

回答

2

问题在Java或其他语言中是一样的。静态方法很难扩展和嘲笑,为什么你应该使用服务,而不是静态方法。例如,如果您使用ColorConverter的静态方法,则无法在应用程序中支持您需要的新功能(支持另一种颜色范围或其他范围),从而扩展其行为。

以下答案为其他适用于TypeScript的语言添加了一些元素。

Java static methods pros & cons

When to use static classes in C#