单例模式结合享元模式的使用
2015-09-24 22:41
295 查看
1、创建被管理的对象
2、创建工厂类负责对外提供管理对象
1、该管理对象仍能够避过工厂进行创建,如果只能通过工厂进行创建,可否实现?
2、工厂中数据中心缓存的声明能否使用static关键字,有何影响?
public class DataCenter { private String name; public DataCenter(String name) { this.name = name; } public String getName() { return this.name; } }
2、创建工厂类负责对外提供管理对象
import java.util.HashMap; import java.util.Map; public class DataCenterFactory { /** * 数据中心缓存 */ private Map<String,DataCenter> dataCenterCache = new HashMap<String,DataCenter>(); /** * 私有构造器 */ private DataCenterFactory() { } /** * 由静态内部类维护单例 * @author admin * */ private static class SingletonHolder { private static DataCenterFactory instance = new DataCenterFactory(); } public static DataCenterFactory getInstance() { return SingletonHolder.instance; } /** * 对外提供数据中心缓存 * @param name * @return */ public DataCenter getDataCenter(String name) { if(null == dataCenterCache.get(name)) { dataCenterCache.put(name,new DataCenter(name)); } return dataCenterCache.get(name); } }
1、该管理对象仍能够避过工厂进行创建,如果只能通过工厂进行创建,可否实现?
2、工厂中数据中心缓存的声明能否使用static关键字,有何影响?
private static Map<String,DataCenter> dataCenterCache = new HashMap<String,DataCenter>();
相关文章推荐
- python-内建函数
- ahu-595-撒哈拉大冒险
- 断舍离——将晦气和无力清扫出去
- WXY的行为和ZP的行为
- windows sdk ddk wdk
- jquery-easyui实现页面布局和增删改查操作(SSH2框架支持)转载
- C++ 项目经验总结:程序严谨性(一)
- 简易计算器
- 基于模拟落体碰撞的优化算法——本科毕业论文
- scandisk常用方法
- 《深入理解Linux网络技术内幕》阅读笔记(一)
- 动太规划问题
- 关于语音分帧时有重叠部分的原因分析
- windows 无法上网问题解决一例
- android布局
- CentOS6.5下安装apache2.2和PHP 5.5.28
- JavaScript权威设计--Window对象(简要学习笔记十三)
- 当月日历
- 2015-09-24
- 细说Java内部类, 静态内部类, 局部类, 匿名内部类