[AngularJS面面观] 23. 依赖注入 --- Factory vs Service

据说99%的angular的初学者都会有一个疑问:factoryservice到底有什么区别?什么情况该用factory,而什么情况又该用service呢?

比如这个Stackoverflow上的这个问题:Service vs Factory,又或者是这个问题:Service vs Provider vs Factory

这些问题都有热心答主回答的很棒了,能够解释清它们共同点,区别以及典型用法。因此本文就换个角度,从最根本的角度来看看这两个概念在源代码层次上是如何实现的。

Factory

首先,我们来看看module上的factory方法,它是创建一个factory的入口方法:

factory: invokeLaterAndSetModuleName('$provide', 'factory')

// 对于factory而言就是调用: invokeLaterAndSetModuleName('$provide', 'factory')
function invokeLaterAndSetModuleName(provider, method) {
   
  return function(recipeName, factoryFunction) {
   
    // 在factory函数上设置module名称
    if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;

    // 将factory的定义置入任务队列
    invokeQueue.push([provider, method, arguments]);
    return moduleInstance;
  };
}

因此当我们使用该API创建一个factory时,该factory的”蓝图”可以表达成下面这个函数:

// 假设我们创建一个名为aFactor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值