Duvida que ocorre muito entre os iniciantes em AngularJS, foi uma pergunta de um colega meu hoje, ele me pergunta “Qual a diferença entre Service e Factory”. Analisando código é mais simples do que explicar com palavras 🙂
function factory(name, factoryFn) {
return provider(name, { $get: factoryFn });
}
function service(name, constructor) {
return factory(name, ['$injector', function($injector) {
return $injector.instantiate(constructor);
}]);
}
A cima vemos um exemplo de factory e outro de service. Uma service simplesmente retorna uma factory, teoricamente eles são iguais. A diferença está no $injector.instantiate que cria uma nova instância de service.
Ou seja, qualquer um que você escolher servirá. Geralmente, nós usamos as factories para funções “class-like”, pois nelas você adiciona propriedades e atributos e pode retornar um objeto para um controller.
Observe:
app.factory('Person', function(){
return {
name: "Mayron",
sayHello: function(text){
return "Hello!!!";
}
}
});
Já os services utilizamos quando queremos que a funções tenham um retorno:
app.service('personService', function($http){
this.getPersonInfo = function(personId){
return $http.get("/Person/", { params: {PersonId: personId });
};
});
Podemos ver a documentação neste link, para ter acesso a mais explicações para quem quer entender melhor.
Qualquer dúvida, sugestão ou crítica, pode mandar que estamos aqui para responder.