设计模式:缓存和上下文

时间:2016-02-22 20:03:08

标签: java design-patterns dependency-injection

关于设计模式的问题。

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

我的DataCache是否应该存储缓存数据的上下文有效,或者最好只保留DataManager以确定何时需要重置DataCache ?我觉得在缓存中使用Context也意味着更多不必要的维护,但也许有充分的理由让它在那里。

一点,但想知道最佳做法是什么。

示例:

public class DataManager {
    DateTime context;
    DataCache cache;
}

public class DataCache {
    Dictionary dict;
}

public class DataManager {
    DateTime context;
    DataCache cache;
}

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果没有Context Cache不存在,

Context可以成为DataCache的一部分。

您正在创建DataManagerDataCache之间的依赖关系。

DataCache替换为接口IDataCache,以便提供松耦合。您可以在以后使用不同的类更改Cache实现。

看看这些SE问题:

What is dependency injection?

Inversion of Control vs Dependency Injection