Uma das dúvidas mais recorrentes entre os iniciantes em AngularJS é a diferença entre Service e Factory e quando exatamente devemos usar um ao invés do outro. Bom, pelo código-fonte você pode ver a resposta:
function factory(name, factoryFn) {
return provider(name, { $get: factoryFn });
}
function service(name, constructor) {
return factory(name, ['$injector', function($injector) {
return $injector.instantiate(constructor);
}]);
}
Dado que service simplesmente retorna factory, para o nosso uso diário eles são praticamente iguais. A diferença é o $injector.instantiate que cria uma nova instância de service.
Em resumo, você pode usar qualquer um para resolver o seu problema mas, como regra geral, nós usamos as factories para funções “class-like”, nas quais você pode adicionar propriedades e atributos e retornar para um controller. Por exemplo:
app.factory('Person', function(){
return {
name: "Matheus",
age: 25,
sayHello: function(text){
return "Hello from Concrete!";
}
}
});
E podemos usar services para compartilhar funções utilitárias. Por exemplo:
app.service('personService', function($http){
this.getPersonInfo = function(personId){
return $http.get("/Person/", { params: {PersonId: personId });
};
});
Entendido? Neste link da documentação oficial do AngularJS tem mais explicações para quem quer entender melhor.
Se tiver alguma dúvida, sugestão ou crítica, é só deixar no campo abaixo. Espero ter ajudado! Até a próxima.




