Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是一个代理模式实现的示例吗?_Java_Design Patterns_Proxy Pattern - Fatal编程技术网

Java 这是一个代理模式实现的示例吗?

Java 这是一个代理模式实现的示例吗?,java,design-patterns,proxy-pattern,Java,Design Patterns,Proxy Pattern,我有一个使用API的Java系统。几天前,我们开始面临以下问题:远程API从我的系统接收了太多的请求。早在系统的早期,这不是一个主要问题,但随着我的数据不断增长,我对每个实体提出了多个请求,系统的性能一点一点地变得越来越差。我注意到我提出的许多网络请求并不是真正必要的,因为数据更新不太频繁。因此,我实现了一个类,当我的系统启动时,该类将对所有远程API数据进行分析。创建/更新实体时,我会在发出任何请求之前加载它。我据此对待删除。远程API也会在进行任何更改时通知我,这样即使在系统之外进行了更改,

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

我真正想知道的是:这种做法有什么名字吗?任何已知的设计模式
? 我必须说,我做了一些研究,我认为这是一个很好的例子,但我也不是很确定(事实上,大多数设计模式看起来都很相似),我对设计模式也不是很感兴趣。

这不是一个完全的代理模式,因为代理模式更多地属于“延迟加载”的范畴。根据中指定的代理模式的描述

控制对对象的访问的一个原因是延迟完全访问 在我们实际需要使用之前,它的创建和初始化成本 它

我不确定你会称之为什么,除了过度急切地加载之外

我会称之为你实现的缓存系统。但不确定是否有用于此的设计模式


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

是的,很可能是缓存系统。我甚至从这样一个名字开始。然而,缓存未命中是一种常见的缓存中可能发生的情况,使用回退方法检索数据—但在我的系统中不会发生这种情况。它更像是一面镜子。此外,我认为这里没有观察者模式的位置,因为API通过HTTP POST通知我。