我有一个带有私有静态映射的Java类,用于在应用程序执行期间存储信息.我只会将一次键/值放入Map中,但可能会多次读取地图值.
所以我现在拥有它的方式,代码执行get并检查null.如果为null,那么我收集我需要的数据并将其放入地图中.客户端代码的后续调用将保证从映射中获取值.客户端不需要进行空检查.
这样做的原因是将数据放入地图可能很昂贵,所以我只希望每个键执行一次.
这有什么模式吗?我似乎找不到任何讨论这种情况的东西.
TIA
这是一个完全非线程安全的例子:
public class TestWorm {
private static Map map = new HashMap(32);
public Object getValue(String key) {
if (map.get(key) != null) {
return map.get(key);
}
// do some process to get Object
Object o = new Object();
map.put(key, o);
return o;
}
}