2
下面,我已經實現了Multiton
模式,但我認爲這個問題同樣適用於Singleton
模式:辛格爾頓(或者多例)模式的基礎上經過時間
private static ConcurrentHashMap<String, LocatorDAO> instances = new ConcurrentHashMap<String, LocatorDAO>();
public static LocatorDAO getInstance(String page String field)
{
String instanceID = page + " " + field;
LocatorDAO result = instances.get(instanceID);
if (result == null)
{
LocatorDAO m = new LocatorDAO(page, field);
result = instances.putIfAbsent(instanceID, m);
if (result == null)
result = m;
}
return result;
}
我想通過一個實例來修改這個設計新實例每300秒 - 所以如果從我們實例化先前實例的時間過去300秒,我想再次實例化它(或者如果實例從未實例化)。
這怎麼辦?
注意:您可以使用computeIfAbsent來簡化當前的代碼。例如,請參閱:http://stackoverflow.com/a/18149547/829571 – assylias
不確定您的'HashMap'有多大的靈活性。它是否與你的其他代碼緊密結合?如果是這樣,你被迫在'getInstance'內使用靜態本地時間戳? – jiveturkey