我知道这已经被问了很多次了(其实很多!),但是我仍然无法完全理解这两者之间的区别是什么。为什么我应该选择在AngularJS中使用工厂服务?
我知道一个服务返回所提供的功能的单一实例,以及一个工厂将简单地调用这个函数返回其值。
但是......
在我看来,你可以做,并实现使用一种或另一种相同的效果,所以我应该如何选择使用哪一个?为什么我应该选择服务超过工厂,或以其他方式?
有没有这样一种情况,一个人可以做一些其他人不能做的事情?
我知道这已经被问了很多次了(其实很多!),但是我仍然无法完全理解这两者之间的区别是什么。为什么我应该选择在AngularJS中使用工厂服务?
我知道一个服务返回所提供的功能的单一实例,以及一个工厂将简单地调用这个函数返回其值。
但是......
在我看来,你可以做,并实现使用一种或另一种相同的效果,所以我应该如何选择使用哪一个?为什么我应该选择服务超过工厂,或以其他方式?
有没有这样一种情况,一个人可以做一些其他人不能做的事情?
简而言之
如果你想让你的函数像普通函数一样被调用,请使用factory。如果你希望你的函数被新运算符实例化,请使用service。如果你不知道其中的差别,使用厂家
来源:
网址:http://iffycan.blogspot.in/2013/05/angular-service-or-factory.html
详解
当您使用的服务,您声明变量和函数将原型将新的对象和对象返回给你。在工厂中,它将按照原样返回功能。
比方说,您创建了一个服务,10个功能,当你把它作为依赖,新的对象将被创建,所有功能将被原型,检查例如
function Gandalf() {
this.color = 'grey';
}
Gandalf.prototype.comeBack = function() {
this.color = 'white';
}
下面的“这”将被退回。性能问题在这里可以忽略不计。
必须有一些我在这里失踪,但我仍然不明白为什么我会选择使用服务或工厂。工厂的函数也可以返回一个对象:'function(){var color ='gray'; return {comeBack:function(){color ='white'; }}; }' – 2014-10-30 13:40:03
他选择了一个服务,因为他正在为它提供一个原型,一个新的对象。在TypeScript,CoffeeScript或ES6中,这将是一个类。它是一个用new关键字实例化的对象。 – Martin 2014-10-30 14:09:35
我意识到在那里陈述的不同,然而我所问的不是* how *,而是* why。为什么我应该选择一个呢?编辑问题的标题,以避免可能的困惑 – 2014-10-30 13:42:25
所有的服务,提供和工厂是单身人士,你可以了解每个人的基本知识,然后决定什么是最适合你的解决方案,这里没有人适合这里 – 2014-10-30 13:44:38
问题是我理解基本的区别,但我不能看到一个可能的情况,当一个人可以做一些其他人不能做的事时。考虑到这一点,我总是可以坚持一种方法,而不要使用另一种方法。这不是我想要的。 – 2014-10-30 13:46:35