【问题标题】:What are the differences between "service" and "Factory"?“服务”和“工厂”有什么区别?
【发布时间】:2016-10-14 08:45:01
【问题描述】:

当我需要使用工厂或服务时,我试图找到真正的区别,但我总是在示例中找到相同的内容,例如:

a) This is the way to create the "i18n" service...
b) This is the way to create the "i18n" factory...

就像把相同的代码按不同的顺序做同样的事情。所以我总是问自己:如果我能做到这一点,真正的区别是什么?

另一个问题是在很多教程中,人们对每个术语都赋予了不同的含义,所以现在我很困惑。

所以,我问:

  1. 服务的含义是什么?
  2. 工厂是什么意思?
  3. 服务和工厂有什么区别?
  4. 什么时候需要使用服务?
  5. 什么时候需要使用工厂?

谢谢!

【问题讨论】:

    标签: service factory


    【解决方案1】:

    1.服务是什么意思?

    2。工厂是什么意思?

    服务和工厂的含义相同,即它们是javascript函数,负责执行特定任务。 Angular Service 服务和 Angular Factory 服务是我们可以创建 Angular 服务的方式,根据应用程序的需要,我们可以使用它们中的任何一个。

    3.服务和工厂有什么区别?

    在Service服务中,函数就像一个构造函数,你不需要初始化和返回变量,服务会自动为你做。

        myApp.service("LoginService", function () {        
            this.login = function (username, password) {                
               this.isLogged = true;      
          }        
        })
    

    在控制器中,您可以使用以下代码访问服务-

        LoginService.login($scope.form.Username, $scope.form.Password);        
        $scope.loggedMessage = LoginService.isLogged; 
    

    而在工厂中,您必须显式初始化对象并将其返回如下

        myApp.factory("LoginFactory", function () {
            var obj = {};
            obj.login  = function(username,password){            
                obj.isLogged = true;            
                return obj;
            }
            return obj;    
        })
    

    在控制器中,您可以使用以下代码访问工厂-

        var obj = LoginFactory.login($scope.form.Username, $scope.form.Password);
        $scope.loggedMessage = obj.isLogged;
    

    4.我什么时候需要使用服务?

    它应该用于简单的逻辑。它用于注册将用作对象的构造函数的函数。例如 - 使用服务将用户的登录详细信息保存在对象中。

    5.什么时候需要使用工厂?

    Factory 返回一个对象的实例,使用该对象可以访问工厂函数。例如,您有一个具有加、减、乘功能的 MathFactory。

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2018-01-09
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多