1

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

我对使用 Angular 的 $cacheFactory 很感兴趣,但我不确定如果我的数据保留在工厂中会有什么好处,因为它是单例的。

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

4

1 回答 1

0

CacheFactory是一家工厂:

工厂方法模式的目的是定义一个用于创建对象的接口,但将对象的实例化推迟到子类。

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

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

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

  • 与控制器作用域不同,缓存可以注入过滤器
  • 可以枚举缓存
  • 缓存可以很容易地被销毁或重新定义
  • 与控制器作用域不同,缓存与摘要数据绑定无关
  • 与 cookie 或 localStorage/sessionStorage 不同,缓存与浏览器权限无关

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

CacheFactory 提供以下功能:

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

但是 CacheFactory 也有以下意想不到的行为:

  • '如果删除了最旧的条目,则应清除下一个条目'
  • '应该只在通过 remove 实际删除元素时减小大小'

参考

于 2016-02-04T07:59:48.560 回答