AngularJS fornece serviços que são reutilizáveis objetos de um único botão. Eles podem ser usados para compartilhar o código entre os usuários das aplicações AngularJS. Eles também podem ser injetados em diretivas, filtros e controladores. Neste artigo, vamos entender a Fábrica em AngularJS.
- O que é Fábrica em AngularJS?
 - Diferença entre Serviço e Fábrica
 - Exemplo de Fábrica em JavaScript
 
O que é Fábrica em AngularJS?
Fábrica é uma função angular que é usada para retornar os valores. Um valor sob demanda é criado pela fábrica, sempre que um serviço ou controlador precisar dele. Uma vez criado o valor, ele é reutilizado para todos os serviços e controladores.

Podemos usar a fábrica para criar um serviço.
Diferença entre Serviço e Fábrica
- Um serviço pode ser definido da seguinte forma:
 
app.service('FirstService', function () {
this.sayHola = function () {
console.log('Hola');
};
});
The .service() method takes the name and the function that defines the service. We can inject it in the following way:
app.controller('AppController', function (FirstService) {
FirstService.sayHola(); // logs 'Hola'
});
- >
 - Uma fábrica, por outro lado, pode ser definido da seguinte forma:
 
app.factory('FirstService', function () {
return {
sayHola: function () { 
console.log('Hola');
}
}
});
fábrica() é também um método que leva um nome e uma função que define a fábrica. Podemos injetá-lo da mesma forma que injetar um serviço. A maior diferença entre um serviço e uma fábrica é que retornamos um objeto literal no caso da fábrica (em vez de usarmos isto). A razão é que o serviço é uma função construtora enquanto que uma fábrica não o é.
- Para uma melhor compreensão, vamos dar uma olhada na função de fábrica():
 
function factory(name, factFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn
});
}
>No código dado acima, ele leva o nome e a função de fábrica passada. Ele retorna um provedor com o mesmo nome, juntamente com um método $get(que é a função de fábrica) . Isto se deve ao fato de que sempre que se pede ao injetor uma dependência específica, o injetor pede ao provedor uma instância desse serviço, chamando o método $get().
- Na injecção do FirstService, as funções de fábrica são chamadas:
 
FirstServiceProvider.$get(); // return the instance of the service
- >
 - Para o código do serviço:
 
function service(name, constructor) {
return factory(name, );
}>
> Quando chamamos service(), factory() é o que é realmente chamado. Isto é feito passando uma função que pede ao injector para instanciar um objecto pelo construtor. Em termos mais simples, o serviço chama uma fábrica predefinida.
$injector.instantiate() chama o Object.create() com a função construtor. É por isso que isto é usado em serviços.
Exemplo de Fábrica em JavaScript
var firstModule = angular.module("firstModule", );
firstModule.factory("firstFactory", function() {
return "a value";
});
firstModule.controller("FirstController", function($scope, firstFactory) {
console.log(firstFactory);
});
Injeção de valores na fábrica
Um valor pode ser injetado na fábrica pelo seguinte método:
>var firstModule = angular.module("firstModule", );
firstModule.value("numberValue", 29);
>firstModule.controller("FirstController", function($scope, numberValue) {
>console.log(numberValue);
>});>
NOTE: Deve-se notar que o valor produzido pela função de fábrica é injetado, não a função de fábrica em si.
Com isto, chegamos ao fim desta Fábrica no artigo AngularJS. Espero que você tenha entendido o que é exatamente uma fábrica e como ela difere de um serviço.
Check out the Angular training by Edureka, uma empresa de aprendizagem on-line confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados pelo mundo. Angular é um framework JavaScript que é usado para criar aplicações web escaláveis, empresariais e de desempenho do lado do cliente. Com a adoção do Angular framework sendo alta, a gestão do desempenho da aplicação é orientada indiretamente para a comunidade, gerando melhores oportunidades de trabalho. A Angular Certification Training visa cobrir todos estes novos conceitos em torno do Desenvolvimento de Aplicações Empresariais.