设计模式之享元模式

来源:互联网 发布:知乎融资 编辑:程序博客网 时间:2024/06/11 04:43

描述:java中的线程池技术用到了享元模式,共享相类似对象,降低了占用内存,提高了效率。本例以驾校考试报名系统为例


UML类图



测试代码

1、享元类

package com.java.flyweight;public class SignInfo {private String id;private String subject;private String location;private String address;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}

2、享元子类
package com.java.flyweight;public class SignInfo4Pool extends SignInfo {private String key;public SignInfo4Pool(String key) {super();this.key = key;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}}

3、池容器

package com.java.flyweight;import java.util.HashMap;import java.util.Map;public class SignInfoFactory {private static Map<String, SignInfo> poolMap = new HashMap<String, SignInfo>();public static SignInfo getSignInfo(String key){SignInfo signInfo = null;if(poolMap.containsKey(key)){signInfo = poolMap.get(key);}else{signInfo = new SignInfo4Pool(key);poolMap.put(key, signInfo);}return signInfo;}}

4、测试类

package com.java.flyweight;public class FlyWeightTest {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("科目2考试地点2");System.out.println(signInfo);}}

5、测试结果:

科目0考试地点0放入池容器中...科目0考试地点1放入池容器中...科目0考试地点2放入池容器中...科目0考试地点3放入池容器中...科目0考试地点4放入池容器中...科目0考试地点5放入池容器中...科目0考试地点6放入池容器中...科目0考试地点7放入池容器中...科目0考试地点8放入池容器中...科目0考试地点9放入池容器中...科目0考试地点10放入池容器中...科目0考试地点11放入池容器中...科目0考试地点12放入池容器中...科目0考试地点13放入池容器中...科目0考试地点14放入池容器中...科目0考试地点15放入池容器中...科目0考试地点16放入池容器中...科目0考试地点17放入池容器中...科目0考试地点18放入池容器中...科目0考试地点19放入池容器中...科目0考试地点20放入池容器中...科目0考试地点21放入池容器中...科目0考试地点22放入池容器中...科目0考试地点23放入池容器中...科目0考试地点24放入池容器中...科目0考试地点25放入池容器中...科目0考试地点26放入池容器中...科目0考试地点27放入池容器中...科目0考试地点28放入池容器中...科目0考试地点29放入池容器中...科目1考试地点0放入池容器中...科目1考试地点1放入池容器中...科目1考试地点2放入池容器中...科目1考试地点3放入池容器中...科目1考试地点4放入池容器中...科目1考试地点5放入池容器中...科目1考试地点6放入池容器中...科目1考试地点7放入池容器中...科目1考试地点8放入池容器中...科目1考试地点9放入池容器中...科目1考试地点10放入池容器中...科目1考试地点11放入池容器中...科目1考试地点12放入池容器中...科目1考试地点13放入池容器中...科目1考试地点14放入池容器中...科目1考试地点15放入池容器中...科目1考试地点16放入池容器中...科目1考试地点17放入池容器中...科目1考试地点18放入池容器中...科目1考试地点19放入池容器中...科目1考试地点20放入池容器中...科目1考试地点21放入池容器中...科目1考试地点22放入池容器中...科目1考试地点23放入池容器中...科目1考试地点24放入池容器中...科目1考试地点25放入池容器中...科目1考试地点26放入池容器中...科目1考试地点27放入池容器中...科目1考试地点28放入池容器中...科目1考试地点29放入池容器中...科目2考试地点0放入池容器中...科目2考试地点1放入池容器中...科目2考试地点2放入池容器中...科目2考试地点3放入池容器中...科目2考试地点4放入池容器中...科目2考试地点5放入池容器中...科目2考试地点6放入池容器中...科目2考试地点7放入池容器中...科目2考试地点8放入池容器中...科目2考试地点9放入池容器中...科目2考试地点10放入池容器中...科目2考试地点11放入池容器中...科目2考试地点12放入池容器中...科目2考试地点13放入池容器中...科目2考试地点14放入池容器中...科目2考试地点15放入池容器中...科目2考试地点16放入池容器中...科目2考试地点17放入池容器中...科目2考试地点18放入池容器中...科目2考试地点19放入池容器中...科目2考试地点20放入池容器中...科目2考试地点21放入池容器中...科目2考试地点22放入池容器中...科目2考试地点23放入池容器中...科目2考试地点24放入池容器中...科目2考试地点25放入池容器中...科目2考试地点26放入池容器中...科目2考试地点27放入池容器中...科目2考试地点28放入池容器中...科目2考试地点29放入池容器中...科目3考试地点0放入池容器中...科目3考试地点1放入池容器中...科目3考试地点2放入池容器中...科目3考试地点3放入池容器中...科目3考试地点4放入池容器中...科目3考试地点5放入池容器中...科目3考试地点6放入池容器中...科目3考试地点7放入池容器中...科目3考试地点8放入池容器中...科目3考试地点9放入池容器中...科目3考试地点10放入池容器中...科目3考试地点11放入池容器中...科目3考试地点12放入池容器中...科目3考试地点13放入池容器中...科目3考试地点14放入池容器中...科目3考试地点15放入池容器中...科目3考试地点16放入池容器中...科目3考试地点17放入池容器中...科目3考试地点18放入池容器中...科目3考试地点19放入池容器中...科目3考试地点20放入池容器中...科目3考试地点21放入池容器中...科目3考试地点22放入池容器中...科目3考试地点23放入池容器中...科目3考试地点24放入池容器中...科目3考试地点25放入池容器中...科目3考试地点26放入池容器中...科目3考试地点27放入池容器中...科目3考试地点28放入池容器中...科目3考试地点29放入池容器中...科目2考试地点2从池容器中直接取出...


原创粉丝点击