享元模式详解
?
SignInfo.java
public class SignInfo {/*** 報名人員ID.*/private String id;/*** 考試地點.*/private String location;/*** 考試科目.*/private String subject;/*** 郵寄地址.*/private String postAddress;/*** 獲取id.* @return the id*/public String getId() {return id;}/*** 設置id.* @param newId the id to set*/public void setId(String newId) {id = newId;}/*** 獲取location.* @return the location*/public String getLocation() {return location;}/*** 設置location.* @param newLocation the location to set*/public void setLocation(String newLocation) {location = newLocation;}/*** 獲取subject.* @return the subject*/public String getSubject() {return subject;}/*** 設置subject.* @param newSubject the subject to set*/public void setSubject(String newSubject) {subject = newSubject;}/*** 獲取postAddress.* @return the postAddress*/public String getPostAddress() {return postAddress;}/*** 設置postAddress.* @param newPostAddress the postAddress to set*/public void setPostAddress(String newPostAddress) {postAddress = newPostAddress;}}SignInfoForPool.java
public class SignInfoForPool extends SignInfo {/*** 定義一個對象池提取的key值.*/private String key;public SignInfoForPool(final String key) {this.key = key;}/*** 獲取key.* @return the key*/public String getKey() {return key;}/*** 設置key.* @param newKey the key to set*/public void setKey(String newKey) {key = newKey;}}SignInfoFactory.java
public class SignInfoFactory {/*** 池容器.*/private static Map<String, SignInfo> pool = new HashMap<>(64);public static SignInfo getSignInfo(final String key) {// 設置返回對象.SignInfo result = null;// 池中沒有該對象,則建立,并放入池中.if (!pool.containsKey(key)) {System.out.println(key + "----建立對象,并放置到池中.");result = new SignInfoForPool(key);pool.put(key, result);} else {result = pool.get(key);System.out.println(key + "----直接從池中取得.");}return result;} }Client.java
public class Client {/*** @param args*/public static void main(String[] args) {// 初始化對象池.for (int i=0; i<4; i++) {String subject = "科目" + i;// 初始化地址.for (int j=0; j<30; j++) {String key = subject + "考試地點" + j;SignInfoFactory.getSignInfo(key);}}// 獲取對象.SignInfo signInfo = SignInfoFactory.getSignInfo("科目1考試地點1");}}總結
- 上一篇: 微服务架构设计模式~为应用程序定义微服务
- 下一篇: Java并发编程实战~CountDown