キー/コンテキスト/顧客ごとに 1 回だけインスタンスが存在するクラスを作成する必要があります。
問題と解決策を考えすぎているかどうかはわかりません。提案やガイダンスは非常に役立ちます。以下に、私がやろうとしていることの簡単な例を示します。
投稿を小さく保つために、インターフェイスと抽象クラスを削除しました。このコードをコンパイルできるはずです
初期化時間を使用して、2 つのインスタンスが同じか異なるかを調べていました。
基本クラス
package com.SomeCompany2.ps.stackOverflow.question;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CheckClass{
protected String intializationTime;
public CheckClass(){
setIntializationTime();
}
private void setIntializationTime() {
final Date date = new Date();
final DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
this.intializationTime = formatter.format(date);
}
public String getIntializationTime(){
return this.intializationTime;
}
public boolean isMatch(){
return false;
}
}
インスタンスが 1 つだけ存在することを確認するクラス ファクトリ。
package com.SomeCompany2.ps.stackOverflow.question;
import java.util.HashMap;
import java.util.Map;
public class CheckClassFactory{
private CheckClassFactory(){}
private static class CheckClassHolder {
private static final Map<String, CheckClass> mapping = new HashMap<String, CheckClass>();
private static CheckClass getInstance(final String key){
if (!mapping.containsKey(key)){
final CheckClass INSTANCE = new CheckClass();
mapping.put(key, INSTANCE);
}
return mapping.get(key);
}
public static void removeInstance(final String key){
mapping.remove(key);
}
}
public static CheckClass getInstance(final String key){
return CheckClassHolder.getInstance(key);
}
public static void removeInstance(final String key){
CheckClassHolder.removeInstance(key);
}
}
私が考えている質問の 1 つは、「removeInstance」が呼び出されてインスタンスがマップから削除されると、インスタンスは破棄されるかということです。
また、このタスクを達成するためのより簡単な方法または既知のパターンはありますか?