package sharinModule;
public class SignInfo {
private String id;
private String location;
private String subject;
private String postAddress;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getPostAddress() {
return postAddress;
}
public void setPostAddress(String postAddress) {
this.postAddress = postAddress;
}
}
public class SignInfo4Pool extends SignInfo{
//key
private String key;
public SignInfo4Pool(String _key) {
this.key = _key;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
import java.util.HashMap;
public class SignInfoFactory {
//池容器
private static HashMap<String, SignInfo> pool = new HashMap<>();
@Deprecated
public static SignInfo SignInfo() {
return new SignInfo();
}
//从池中获取对象
public static SignInfo getSignInfo(String key) {
SignInfo result = null;
//池中没该对象则建立
if (!pool.containsKey(key)) {
System.out.println(key + " 建立对象,并放在池子中");
result = new SignInfo4Pool(key);
pool.put(key, result);
} else {
result = pool.get(key);
System.out.println(key + "直接从池中获得");
}
return result;
}
}
package sharinModule;
public class client {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
String subject = "学科" + i;
for (int j = 0; j < 100; j++) {
String key = subject + "考试地点" + j;
SignInfoFactory.getSignInfo(key);
}
}
SignInfo signInfo = SignInfoFactory.getSignInfo("学科99考试地点99");
}
}
......
学科99考试地点64 建立对象,并放在池子中
学科99考试地点65 建立对象,并放在池子中
学科99考试地点66 建立对象,并放在池子中
学科99考试地点67 建立对象,并放在池子中
......
学科99考试地点73 建立对象,并放在池子中
学科99考试地点74 建立对象,并放在池子中
学科99考试地点75 建立对象,并放在池子中
学科99考试地点76 建立对象,并放在池子中
学科99考试地点77 建立对象,并放在池子中
学科99考试地点78 建立对象,并放在池子中
......
学科99考试地点95 建立对象,并放在池子中
学科99考试地点96 建立对象,并放在池子中
学科99考试地点97 建立对象,并放在池子中
学科99考试地点98 建立对象,并放在池子中
学科99考试地点99 建立对象,并放在池子中
学科99考试地点99直接从池中获得
可以看到,建立的对象以一个key作为唯一标示放入HashMap中,保证了对象的最小粒度,不会出现重复的对象大量堆积。达到了建立多个可贡献的对象的目的。