设计模式之享元模式
来源:互联网 发布:知乎融资 编辑:程序博客网 时间: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从池容器中直接取出...
阅读全文
0 0
- 设计模式之享元
- 设计模式之享元
- 设计模式 之 享元
- 设计模式之享元
- 设计模式之享元
- 设计模式之Flyweight享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- java设计模式之享元模式
- 【设计模式】之 Flyweight享元模式
- 设计模式之享元模式
- c++设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- jquery选择器获取父级元素、同级元素、子元素
- 冒泡排序
- java工程导出可执行jar
- 修改div下第二个dt下的dl的高 (一个挺难又简单 的小jquery)
- http://bbs.itheima.com/thread-338469-1-1.html
- 设计模式之享元模式
- 红黑树 基本操作
- 判断101到200之间的素数
- [leetcode]: 100. Same Tree
- Error:Execution failed for task ':app:processDebugManifest'
- tensorflow的一些代码分析(一) tensorflow基本流程和基本概念
- seq2seq Model相关接口介绍
- 同源策略及解决办法
- word2016如何插入目录以及页码