@rejjer

AngularJS — зачем оборачивать service`s в factory?

Тут, в файле modules/authentication/services.js
service.Login, service.SetCredentials и service.ClearCredentials находятся в factory('AuthenticationService')
Что это дает?
Ведь можно просто в отдельные сервисы вынести..
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
функции Login, SetCredentials и т.д. являются методами сервиса AuthenticationService.

Фабрика - это способ задания сервиса. Разница между .service и .factory лишь в том, что в первом случае вы засовываете конструктор объекта, а во втором - функцию фабрику которая сама разберется как объект создавать.

// вот сервис
function MyService (dep1, dep2) {
    this.dep1 = dep1;
    this.dep2 = dep2;
}

// А вот фабрика этого сервиса
function myServiceFactory(dep1, dep2) {

    return new MyService(dep1, dep2);
}

// в результате в контейнере зависимостей будет крутиться
// 2 инстанса одного и того же сервиса. То есть одинаковый результат
// при двух подходах.
module.service('foo', MyService)
module.factory('bar', myServiceFactory);


В вашем примере фабрика используется баналь потому что надо где-то сделать объект и для этого используется "модуль". Ну мол для инкапсуляции и т.д. Что бы не экспоузить зависимости вашего объекта никому. Ну а Object.create просто для слабых духом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Хорошая статья https://habrahabr.ru/post/190342/ и еще почитайте банду четырех
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы