В чем разница между «сервисом» и «Фабрикой»?

#service #factory

#Обслуживание #фабрика

Вопрос:

Я пытаюсь найти реальную разницу, когда мне нужно использовать фабрику или сервис, но я всегда нахожу в примерах то же самое, что и:

 a) This is the way to create the "i18n" service...
b) This is the way to create the "i18n" factory...
 

Это все равно, что поместить один и тот же код в разном порядке, чтобы делать одно и то же. Поэтому я всегда спрашиваю себя: в чем реальная разница, если я могу сделать то же самое?

И еще одна проблема заключается во множестве руководств, в которых люди придают различное значение каждому термину, так что теперь я в замешательстве.

Итак, я спрашиваю:

  1. В чем смысл сервиса?
  2. Что означает фабрика?
  3. В чем разница между сервисом и фабрикой?
  4. Когда мне нужно использовать сервис?
  5. Когда мне нужно использовать фабрику?

Спасибо!

Ответ №1:

1. Что означает сервис?

2. Что означает фабрика?

Значение сервиса и фабрики одинаковое, т.Е. Они являются функциями javascript и отвечают за выполнение определенной задачи. Служба Angular Service и служба Angular Factory — это способы, с помощью которых мы можем создать службу Angular, и в зависимости от потребностей приложения мы можем использовать любой из них.

3. В чем разница между сервисом и фабрикой?

В сервисном сервисе функция действует как конструктор, и вам не нужно инициализировать и возвращать переменную, сервис автоматически делает это за вас.

     myApp.service("LoginService", function () {        
        this.login = function (username, password) {                
           this.isLogged = true;      
      }        
    })
 

и в контроллере вы можете получить доступ к сервису, используя приведенный ниже код-

     LoginService.login($scope.form.Username, $scope.form.Password);        
    $scope.loggedMessage = LoginService.isLogged; 
 

В то время как на заводе вы должны явно инициализировать объект и вернуть его, как показано ниже

     myApp.factory("LoginFactory", function () {
        var obj = {};
        obj.login  = function(username,password){            
            obj.isLogged = true;            
            return obj;
        }
        return obj;    
    })
 

и в контроллере вы можете получить доступ к фабрике, используя приведенный ниже код-

     var obj = LoginFactory.login($scope.form.Username, $scope.form.Password);
    $scope.loggedMessage = obj.isLogged;
 

4. Когда мне нужно использовать сервис?

Его следует использовать для простой логики. Он используется для регистрации функции, которая будет использоваться в качестве конструктора объекта. Например, — используйте сервис для сохранения учетных данных пользователя в объекте.

5. Когда мне нужно использовать фабрику?

Фабрика возвращает экземпляр объекта, и с помощью этого объекта вы можете получить доступ к функциям фабрики. Например, у вас есть MathFactory с функциями Add, Subtract, Multiply.