我需要创建一个类,其实例每个键/上下文/客户仅存在一次。
我不知道我是否过度思考问题和解决方案。任何建议或指导都会非常有帮助。下面显示的是我正在尝试做的一个简化示例。
为了使帖子保持较小,我删除了接口和抽象类。您应该能够编译此代码
我正在使用初始化时间来查找两个实例是相同还是不同。
基类
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;
}
}
确保只存在一个实例的类工厂。
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);
}
}
我确实想到的问题之一是,当调用“removeInstance”并将实例从地图中删除时,实例会被销毁吗?
还有一种更简单的方法或已知的模式来完成这项任务吗?