Angularjs – serviço vs fábrica vs fornecedor

Angularjs – serviço vs fábrica vs fornecedor

Existe uma diferença principal:

var module = angular.module('mymodule');
module.service('a', function(){
this.data = [];
this.add = function(){};
this.remove = function(){};
});
module.factory('b', function(){
function c(p){
this.data = [];
this.p = p;
}

c
.prototype = {
add : function(){},
remove : function(){}
}

return c;
});
module.factory('c', function(){
this.$get = function(){

}
});

a – é construtor

new a();   

b – é função

b();

c – angular cria uma instância de função que chama isso. $ get function

new ProviderFunc().$get();

Factory:
Usado principalmente para criar uma nova instância de classe em cada controlador, a propriedade de dados de exemplo abaixo no objeto bb não será compartilhada de TestController -> Test2Controller por causa de sua nova instância.

module.controller('TestController', function($scope, b){
$scope
.bb = new b('you can pass parameter');
});

module.controller('Test2Controller', function($scope, b){
$scope
.bb = new b('you can pass parameter');
});

Serviço:
usado principalmente para compartilhar dados no aplicativo. A matriz de dados será visível de TestController para Test2Controller

module.controller('TestController', function($scope, a){
$scope
.bb = a;
});

module.controller('Test2Controller', function($scope, a){
$scope
.bb = a;
});

Provedor: o
provedor pode ser configurável na instância do aplicativo.

module.config(function(c){
c
.add([
{
a
:1
}
])
});