AngularJS Factory, Service e agora josé ?

AngularJS

Quando começamos a usar o AngularJS mais afundo logo nos deparamos com os conceitos de Factory ou Service .

E depois de testar cada um desses caras vem aquela dúvida.

Qual deles devo usar ?

Se você observar no código fonte do projeto vai perceber bem a diferença, veja aqui com seus próprios olhos.

Legal né ?

Percebeu ?

Sim, é isso mesmo que viu o service retorna um factory.

Se olhar com mais atenção vai perceber que a “grande” diferença entre eles está aqui:

return $injector.instantiate(constructor);

Todos os Services e Factory em Angular são singletons

Vamos fazer um exemplo para ilustrar melhor esses caras:

var app = angular.module('app', []);

app.service('helloWorld_Service', function() {
    this.sayHello = function() {
        return "Hello World"
    };
});

app.factory('helloWorld_Factory', function() {
    return {
        sayHello: function() {
            return "Hello World"
        }
    };
});


function CrtlApp($scope, helloWorld_Factory, helloWorld_Service) {
    $scope.many_hello = [
        helloWorld_Factory.sayHello(),
        helloWorld_Service.sayHello()
    ];
}
<div ng-controller="CrtlApp">
    { { many_hello } }
</div>
Novas Instancias Configuravél
Service NO NO
Factory YES NO
Provider YES YES
Eu costumo a usar essa regras:
  1. Use Serviço quando você precisa apenas de um objeto simples, como um Hash, por exemplo {bla; “oi”, name: “eu”} mas você não pode instanciar-lo.

  2. Use fábrica quando você precisa instanciar um objeto, ou seja, para new Users() ou new Comment(), etc.

  3. Use Provider quando você precisa configurá-lo. Ex: URL (homolog, production, test) ou PORT (dev, production)

O AngularJS tem muitos outros Patters como:

  1. Directives
  2. Scope
  3. Filter
  4. Validator
  5. Dependency Injection
  6. Providers
  7. Modules
  8. ….