TL;DR:与 Angular 无关的静态基本功能 - 作为 AngularJS 服务实现还是普通静态导出类/方法?
长版本:我已经在 TS 中编程大约一个月了,因为我们正在重构我们的应用程序以与 TS 配合使用(为 Angular 2.0 做准备)。
当开始研究我们的一些基本角度服务时,我在想 - 因为实现静态类和方法非常容易 - 也许我们的某些服务根本不应该是服务。
当然,任何与角度有关的功能都必须以某种方式实现为服务。
例如,ColorConverter 或 ColorPicker - 今天我们应用程序中的 angularjs 服务实现了静态逻辑,不会改变或与 Angular 或任何共享外部资源有关 - 可以轻松地替换为导出静态函数的静态模块。
我办公室里有人提出支持角度服务的一个论点是,稍后我们可以轻松地嘲笑这种逻辑。但是为什么我要模拟不会改变且不访问任何外部资源的静态逻辑呢?
佩妮给你的想法。
无论是Java还是其他语言,这个问题都是一样的。静态方法很难扩展和模拟,这就是为什么您应该使用服务而不是静态方法。
例如,如果您对 ColorConverter 使用静态方法,则无法扩展其行为以实现应用程序中所需的新功能(支持其他颜色范围或其他)。
以下答案为其他语言添加了一些也适用于 TypeScript 的元素。
Java静态方法的优缺点 https://stackoverflow.com/a/9541383/1630604
何时在 C# 中使用静态类 https://stackoverflow.com/a/241372/1630604
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)