Не понимаю необходимость $cacheFactory, если фабрики являются синглетонами
Я относительно новичок в AngularJ и пытаюсь создать приложение на одной странице. Мое приложение работает на сайте управления контентом. У меня есть 3 фабрики для функций пользователя, группы и сайта.
Я заинтересован в использовании Angache $cacheFactory, но я не уверен, какая польза от этого, если мои данные остаются на фабрике, поскольку они одноэлементные.
Например, у моей фабрики пользователей есть объект с именем allUsers. Этот объект используется через мое приложение для разных представлений. Интуитивно кажется, что это что-то, что должно быть кэшировано, но мне трудно понять, почему, поскольку этот объект находится на фабрике пользователей, доступ к которой возможен с любого из моих контроллеров.
1 ответ
CacheFactory
это фабрика:
Цель шаблона Factory Method - определить интерфейс для создания объекта, но отложить создание экземпляра объекта до подклассов.
который создает новые экземпляры каждый раз, когда создается объект его типа, в отличие от Singleton:
Цель шаблона Singleton - обеспечить загрузку только одного экземпляра класса и обеспечить глобальную точку доступа.
В Angular CacheFactory предлагает следующие преимущества по сравнению с другими решениями:
- Кеш может быть введен в фильтр, в отличие от областей контроллера
- Кэши можно перечислять
- Кеши могут быть легко уничтожены или переопределены
- Кеши не привязаны к дайджесту привязки данных, в отличие от областей контроллера
- Кэши не привязаны к разрешениям браузера, в отличие от файлов cookie или localStorage / sessionStorage.
Я не уверен, какая выгода, если мои данные останутся на фабрике
CacheFactory предлагает следующие функции:
- 'должен создать кеш с определенной емкостью'
- 'должен удалить весь кеш с помощью removeAll и начать выселение при заполнении'
- "должен корректно обновлять и удалять элементы, если операции связаны"
Но CacheFactory также имеет следующие неожиданные поведения:
- 'должен удалить следующую запись, если самая старая была удалена'
- 'должен уменьшать размер только тогда, когда элемент фактически удаляется с помощью remove'
Рекомендации