如果工厂是单身人士,则不理解$ cacheFactory的需要

时间:2014-02-05 05:55:14

标签: angularjs singleton factory language-features cachefactory

我对AngularJs相对较新,我正在尝试使用它构建单页应用程序。我的应用程序在内容管理站点中运行。我有3个工厂用于用户,组和站点功能。

我对使用angular的$ cacheFactory感兴趣,但我不确定如果我的数据仍然在工厂,那么它的好处是什么,因为它是一个单例。

例如,我的用户工厂有一个名为allUsers的对象。该对象通过我的应用程序用于不同的视图。直觉上,似乎它应该被缓存,但我很难理解为什么因为这个对象在用户工厂中,可以从我的任何控制器访问。

1 个答案:

答案 0 :(得分:0)

CacheFactory是一家工厂:

  

Factory Method模式的目的是定义用于创建对象的接口,但是将对象的实例化推迟到子类。

每次创建类型的对象时都会创建新实例,这与Singleton:

不同
  

Singleton模式的目的是确保只加载一个类的一个实例,并且该实例提供全局访问点。

在Angular中,CacheFactory比其他解决方案具有以下优势:

  • 与控制器范围不同,缓存可以注入过滤器
  • 可以枚举缓存
  • 缓存很容易被破坏或重新定义
  • 与控制器范围
  • 不同,缓存与摘要数据绑定无关
  • 与Cookie或localStorage / sessionStorage
  • 不同,缓存与浏览器权限无关
  

如果我的数据仍在工厂中,我不确定有什么好处

CacheFactory提供以下功能:

  • '应创建具有已定义容量的缓存'
  • '应该通过removeAll吹走整个缓存,并在完整时开始驱逐'
  • '如果操作是链接的,则应正确刷新和逐出项目

但CacheFactory也有以下意外行为:

  • '如果删除了最后一个条目,则应清除下一个条目'
  • '只应在通过删除'
  • 实际删除元素时减小尺寸

<强>参考