8. Factoryler

Factorylerin kullanımı çoğunlukla service metoduna benzer fakar service metodunu bir kurucu olarak düşünebilirken, factory metodunu belirlenen değeri dönen bir fonksiyon olarak düşünebiliriz. Aslına bakarsak, service metodu ile yapılabilecek her işlemin teorik olarak factory metoduyla da gerçekleştirilebileceğini söyleyebiliriz.  Factory statik ve tüm uygulamada tek bir instance oluşturularak kullanılmasına rağmen, service için her seferinde “new service()” ile yeni bir instance oluşturup kullanılır. This anahtar kelimeyi kullanarak bir servis nesnesine özellikler ve işlevler ekleyebilirsiniz. Factory aslında singleton servis nesnesi üreten , primitive tipler, fonksiyon ve object döndüren yapılardır.

Aşağıda factory ile yapılmış ufak bir toplama işlemi örneği mevcut. Ortak modulün içerisine yazılan HesapFactory isimli factory  kontroller içerisinde örnekteki gibi çağırılıp kullanılmıştır.

<html>
<head>
   <script src="~/Scripts/angular.js"></script>
   <script src="~/Scripts/angular-route.js"></script>
   <script>

     var modul = angular.module("MyModule", []);

     modul.factory("HesapFactory",function () {

     var obj = {}

     obj.topla = function(s1, s2) {
      return s1 + s2;
      }

      return obj;

   });

   modul.controller("MyController", function($scope, HesapFactory) {

      $scope.toplaF = function() { $scope.sonuc = HesapFactory.topla($scope.sayi1, $scope.sayi2); }

   });

   </script>
</head>
<body ng-app="MyModule" ng-controller="MyController">

   <b>Sayi 1 : </b> <input type="number" ng-model="sayi1"/><br/>
   <b>Sayi 1 : </b> <input type="number" ng-model="sayi2"/><br/>
   <b>Sonuc</b> : {{sonuc}}<br/>

   <button ng-click="toplaF()">Sayilari topla</button>

 </body>

 </html>