" service"之间有什么区别?和"工厂"?

时间:2016-10-14 08:45:01

标签: service factory

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

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. 什么时候需要工厂?
  6. 谢谢!

1 个答案:

答案 0 :(得分:1)

<强> 1。服务的含义是什么?

<强> 2。工厂的含义是什么?

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

第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返回一个对象的实例,使用该对象可以访问工厂函数。例如,您有一个带有Add,Subtract,Multiply函数的MathFactory。