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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
C++ 缓存管理的设计模式_C++_Design Patterns_Caching_Singleton - Fatal编程技术网

C++ 缓存管理的设计模式

C++ 缓存管理的设计模式,c++,design-patterns,caching,singleton,C++,Design Patterns,Caching,Singleton,我必须创建一个COM API,它基本上将从XML中读取一些数据,对其进行一些处理,并以字符串形式返回一些数据 此API将位于COM DLL中,该DLL大多数时候都位于内存中 我已经创建了一个结构,将数据保存在内存中,可以用作缓存,以避免每次调用API时都读取文件 我可以创建一个singleton类,它可以进行一些处理并将数据存储在缓存中。每当数据发生更改时,它都会更新缓存和文件 但是这个单例类只有在API被调用时才会被使用。这个单例类在全局上是不需要的。在阅读了几篇关于singleton的文章之

我必须创建一个COM API,它基本上将从XML中读取一些数据,对其进行一些处理,并以字符串形式返回一些数据

此API将位于COM DLL中,该DLL大多数时候都位于内存中

我已经创建了一个结构,将数据保存在内存中,可以用作缓存,以避免每次调用API时都读取文件

我可以创建一个singleton类,它可以进行一些处理并将数据存储在缓存中。每当数据发生更改时,它都会更新缓存和文件

但是这个单例类只有在API被调用时才会被使用。这个单例类在全局上是不需要的。在阅读了几篇关于singleton的文章之后,仅仅将singleton用于缓存管理并不是一个好的实践

我不想去单身,但没有任何其他的解决办法。
有什么建议吗?

据我所知,您希望可以从其他程序访问COM,所以为什么不让COM脱离进程。在内存中有一个实例可以缓存数据

基本上是工厂+战略模式的组合。工厂创建实例和策略来选择算法,如从缓存或XML文件获取。为什么不将所有函数和数据放在一个名称空间中,如xmlcache或其他什么?