【问题标题】:Is this over-eager loader object an example of a Proxy Pattern implementation?这个过度渴望的加载器对象是代理模式实现的一个例子吗?
【发布时间】:2012-03-20 14:53:31
【问题描述】:

我有一个使用 API 的 Java 系统。几天前,我们开始面临以下问题:远程 API 从我的系统接收到太多请求。回到系统的早期,这不是一个主要问题,但是系统的性能一点一点地变得越来越差,因为我的数据在增长,并且我对每个实体都发出了多个请求。我注意到我提出的许多网络请求并不是真正必要的,因为数据更新并不频繁。因此,我实现了一个类,当我的系统启动时,它会生成一个包含所有远程 API 数据的over-eager loading。当我创建/更新一个实体时,我会在发出任何请求之前加载它。我相应地对待删除。并且远程 API 还会在进行任何更改时通知我,因此即使在我的系统之外进行了更改,我也可以保持更新。

我真正想知道的是:这种做法有什么名字吗?任何已知的设计模式 ?我必须说我做了一些研究,我认为它是proxy pattern,但我也不是很确定(事实上,大多数设计模式看起来都非常相似),我不是真的那样非常喜欢设计模式。

【问题讨论】:

    标签: java design-patterns proxy-pattern


    【解决方案1】:

    我会称它为 缓存系统 你所实现的。不过不确定是否有设计模式。

    此外,远程 API 会在进行任何更改时通知您这一事实可能已使用 观察者模式完成。

    【讨论】:

    • 是的,它很可能是一个缓存系统。我什至以这样的名字开始。但是,缓存未命中 是可能发生在普通缓存中的情况,具有用于检索数据的备用方法 - 但这在我的系统中不会发生。它更像是一面镜子。另外,我认为这里没有观察者模式的位置,因为 API 通过 HTTP POST 通知我。
    【解决方案2】:

    这不是一个代理模式,因为代理模式更多地属于“延迟加载”的标题。根据中指定的代理模式的描述 Design Patterns (Group of Four Book):

    控制对对象的访问的一个原因是推迟完整的 它的创建和初始化成本,直到我们真正需要使用 它

    除了过度加载之外,我不知道你会怎么称呼它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多