【发布时间】:2015-04-16 21:28:44
【问题描述】:
根据这个问题:
angular.service vs angular.factory
服务由 Angular 使用 new 关键字创建,表示返回对象的 new 实例。
例如:
app.service('helloWorldService', function() {
this.hello = function() {
return "Hello World"; };
}
);
但是,对于工厂来说,它们不是。
这意味着如果开发人员愿意,他们可以创建新实例(通过使用关键字 new)——因此,我假设它为什么称为工厂。
我的问题是:
为什么 Angular 开始创建一个新的服务实例?
我同意服务应该是单例的,它们是,但是创建返回函数的新实例有什么意义呢?对于服务来说,如果 Angular 只返回声明的函数不是更好吗——就像他们对工厂所做的那样。
这对服务不是更有意义吗?
我问的原因是因为我在抽象层上创建服务,但我不确定我是否应该真正使用服务 API 而不是工厂 API,只是因为创建声明函数的新实例似乎是有点无意义和矫枉过正=\
【问题讨论】:
-
我想先说我是 Angular 和开发的新手。似乎该服务有意义的唯一方法是以不同的方式实例化它们,但由于您将依赖项传递给匿名函数,因此它们没有设置为轻松传递参数。我也阅读了关于 SO 的所有相关答案,我也想知道“新”的用途是什么。在实践中,我很满意使用工厂返回 new {} 以拥有一个共享对象,或者返回一个 class(){} 并自己创建实例。
标签: javascript angularjs service factories