Шаблоны проектирования AngularJS: Должен ли я использовать фабрики для создания функций конструктора?

Это то, над чем я размышлял при создании приложения AngularJS. Когда я впервые узнал о фабриках AngularJS, я подумал, что одним из умных способов их использования будет создание и возврат функции конструктора, а не простого объекта, то есть что-то вроде:

app.factory("Foo", function() {
  function Foo(bar, baz) {
    this.bar = bar;
    this.baz = baz;
    ...
  }

  Foo.prototype = {
    constructor: Foo,
    method1: function() { ... },
    method2: function() { ... },
    ...,
    methodn: function() { ... },
  };

  return Foo;
});

Затем вы можете добавить функцию в свои контроллеры и вызвать ееnew, Я нашел это эстетически и ООП-у, но теперь я начинаю думать, что это на самом деле анти-паттерн. Проблема в том, что он отлично работает, когда вы работаете в контекстах, поддерживающих AngularJS, но когда вы захотите, например, вызвать конструктор из консоли, использовать его в Web Worker или повторно использовать код в не Приложение AngularJS, вы начинаете работатьоколо AngularJS, а не с ним. Я начал задаваться вопросом, был ли этот подход ошибочным, поскольку функции в javascript уже кажутся «одиночками» и не нуждаются в какой-либо помощи при создании экземпляра.

Я неправильно использую фабрики AngularJS? Буду ли я лучше обслужен с функциями конструктора, открытыми для глобальной области видимости? В более общем смысле, существуют ли конкретные факторы, способствующие использованию фабрик / сервисов / провайдеров AngularJS над глобальными объектами или наоборот?

Ответы на вопрос(2)

Ваш ответ на вопрос