AngularJS: quando usar Service e Factory

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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *