Не понимаю необходимость $cacheFactory, если фабрики являются синглетонами

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

Я заинтересован в использовании Angache $cacheFactory, но я не уверен, какая польза от этого, если мои данные остаются на фабрике, поскольку они одноэлементные.

Например, у моей фабрики пользователей есть объект с именем allUsers. Этот объект используется через мое приложение для разных представлений. Интуитивно кажется, что это что-то, что должно быть кэшировано, но мне трудно понять, почему, поскольку этот объект находится на фабрике пользователей, доступ к которой возможен с любого из моих контроллеров.

1 ответ

Решение

CacheFactory это фабрика:

Цель шаблона Factory Method - определить интерфейс для создания объекта, но отложить создание экземпляра объекта до подклассов.

который создает новые экземпляры каждый раз, когда создается объект его типа, в отличие от Singleton:

Цель шаблона Singleton - обеспечить загрузку только одного экземпляра класса и обеспечить глобальную точку доступа.

В Angular CacheFactory предлагает следующие преимущества по сравнению с другими решениями:

  • Кеш может быть введен в фильтр, в отличие от областей контроллера
  • Кэши можно перечислять
  • Кеши могут быть легко уничтожены или переопределены
  • Кеши не привязаны к дайджесту привязки данных, в отличие от областей контроллера
  • Кэши не привязаны к разрешениям браузера, в отличие от файлов cookie или localStorage / sessionStorage.

Я не уверен, какая выгода, если мои данные останутся на фабрике

CacheFactory предлагает следующие функции:

  • 'должен создать кеш с определенной емкостью'
  • 'должен удалить весь кеш с помощью removeAll и начать выселение при заполнении'
  • "должен корректно обновлять и удалять элементы, если операции связаны"

Но CacheFactory также имеет следующие неожиданные поведения:

  • 'должен удалить следующую запись, если самая старая была удалена'
  • 'должен уменьшать размер только тогда, когда элемент фактически удаляется с помощью remove'

Рекомендации

Другие вопросы по тегам