Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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_Dependency Injection - Fatal编程技术网

Java 设计模式:缓存和上下文

Java 设计模式:缓存和上下文,java,design-patterns,dependency-injection,Java,Design Patterns,Dependency Injection,关于设计模式的问题 我有一个DataManager,它使用一个缓存DataCache,该缓存对给定的上下文(在我的例子中是一个日期)有效 我的DataCache是否应该存储缓存数据有效的上下文,还是最好让DataManager知道何时需要重置DataCache?我觉得在缓存中也有上下文意味着更多不必要的维护,但也许有一个很好的理由将其放在缓存中 这是一个小问题,但我想知道这里的最佳实践是什么 例如: public class DataManager { DateTime context;

关于设计模式的问题

我有一个
DataManager
,它使用一个缓存
DataCache
,该缓存对给定的上下文(在我的例子中是一个日期)有效

我的
DataCache
是否应该存储缓存数据有效的上下文,还是最好让
DataManager
知道何时需要重置
DataCache
?我觉得在缓存中也有上下文意味着更多不必要的维护,但也许有一个很好的理由将其放在缓存中

这是一个小问题,但我想知道这里的最佳实践是什么

例如:

public class DataManager {
    DateTime context;
    DataCache cache;
}

public class DataCache {
    Dictionary dict;
}


如果
DataCache
可以在内部使用上下文来知道它无效或重置它自己或其他什么,它应该存储它。这里的设计重点是让类(这里是
DataCache
类)的用户更简单、更安全,而不是减少类的内部工作


根据上下文的使用方式,它只能存储在
DataCache
中,
DataManager
可以使用getter访问它。

缓存负责在数据过期时使其失效,因此理想情况下,数据缓存应该跟踪上下文并使其失效。DataManager应该查询缓存,如果缓存没有数据,它应该获取数据并更新缓存

Context
可以是
Cache
的一部分,前提是
Context
不存在而没有
DataCache

您正在
DataManager
DataCache
之间创建依赖关系

用接口
IDataCache
替换
DataCache
,以便提供松耦合。将来可以使用不同的类更改
缓存
实现

看看这些问题:

所以答案是“最有意义的东西”@gdbj这更像是“用户至上”,但“最有意义的东西”也是一句很好的座右铭,即使是在编程之外:-)
public class DataManager {
    DateTime context;
    DataCache cache;
}

public class DataCache {
    DateTime context;  // note that we store the context here as well
    Dictionary dict;
}