假设我们的应用程序中有一个CountryList对象,它应返回国家/地区列表.加载国家是一项繁重的操作,因此应该缓存该列表.
其他要求:
我提出了以下解决方案:
public class CountryList {
private static final Object ONE = new Integer(1);
// MapMaker is from Google Collections Library
private Map<Object, List<String>> cache = new MapMaker()
.initialCapacity(1)
.makeComputingMap(
new Function<Object, List<String>>() {
@Override
public List<String> apply(Object from) {
return loadCountryList();
}
});
private List<String> loadCountryList() {
// HEAVY OPERATION TO LOAD DATA
}
public List<String> list() {
return cache.get(ONE);
}
public void invalidateCache() {
cache.remove(ONE);
}
}
Run Code Online (Sandbox Code Playgroud)
你怎么看待这件事?你觉得它有什么坏处吗?还有其他办法吗?我怎样才能让它变得更好?我应该在这种情况下寻找另一种解决方案吗?
谢谢.