关于设计模式的问题。
我有一个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;
}
答案 0 :(得分:1)
如果DataCache
可以在内部使用上下文来知道它无效或重置自身或其他什么,它应该存储它。这里的设计优先级是为类的用户(这里是DataCache
类)保持简单和安全,而不是减少类的内部工作。
根据上下文的使用方式,它只能存储在DataCache
中,DataManager
可以使用getter访问它。
答案 1 :(得分:1)
缓存有责任在数据过期时使数据无效,因此理想情况下数据应该跟踪上下文并使其无效。 DataManager应该查询Cache,如果缓存没有数据,它应该获取数据并更新缓存。
答案 2 :(得分:0)
Context
Cache
不存在, Context
可以成为DataCache
的一部分。
您正在创建DataManager
和DataCache
之间的依赖关系。
将DataCache
替换为接口IDataCache
,以便提供松耦合。您可以在以后使用不同的类更改Cache
实现。
看看这些SE问题: