设计模式之单例模式(Singleton)
来源:互联网 发布:人工智能 视频分析 编辑:程序博客网 时间:2024/06/05 04:41
单例模式通常用于整个应用只存在一个类的实例的场景。单例模式分为懒汉式与饿汉式,实现的方式可以通过普通的class,也可以通过enum实现。
1、饿汉式:
对于应用启动后的访问响应时间要求高的应用可以尝试使用,性能消耗主要在创建对象上。
/** * 单例模式,饿汉式。 * @author jim * */public class ApplicationCacheSingleton1 {/** * 加载类时进行对象创建。 */private static ApplicationCacheSingleton1 instance = new ApplicationCacheSingleton1();/** * 返回实例。 * @return ApplicationCacheSingleton1实例 */public static ApplicationCacheSingleton1 getInstance(){return instance;}}
2、懒汉式
侧重于按需创建,避免不必要的实例创建与维护。
/** * 单例模式,支持对象序列化,懒汉式。 * @author jim * */public class ApplicationCacheSingleton implements Serializable{/** * UID */private static final long serialVersionUID = 1420731236246142089L;/** * 持有实例。 */private static ApplicationCacheSingleton instance;/** * 获取实例,当实例不存在时创建。 * 采用Double-check进行实例创建。 * @return ApplicationCacheSingleton实例 */public static ApplicationCacheSingleton getInstance(){if (instance == null){initInstance();}return instance;}/** * 实例化单实例成员变量。 */private synchronized static void initInstance(){if (instance == null){instance = new ApplicationCacheSingleton();}}/*** * 反序列化处理,确保类的实例只有一个。 * @return 对象实例 */private Object readResolve(){return instance;}/** 私有构造器,不允许外部实例化 */private ApplicationCacheSingleton() {}}
另外一种通过enum实现单例,此种模式由enum自动保证序列化、反序列时单实例的存在。
/** * 通过Enum实现单例模式,其自动处理了反序列化单例的问题。 * @author jim * */public enum EnumSingleton {INSTANCE;public void getName(){return;}}
0 0
- 设计模式之单例(Singleton)
- Java设计模式之单例模式(singleton模式)
- java设计模式之单例模式(Singleton模式)
- 设计模式之单例模式(singleton模式)
- Java设计模式之单例模式(singleton模式)
- 设计模式之Singleton模式(单例模式)
- 设计模式之单例模式Singleton
- 【设计模式】之 Singleton 单例模式
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式Singleton
- 设计模式之单例模式-Singleton
- 设计模式之单例模式Singleton
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式(Singleton)
- 设计模式之单例模式:singleton
- 设计模式之单例模式(Singleton)
- Java与C通讯 网络流解析
- C++ explicit关键字
- 黑马程序员_Java基础[16]_多态2
- DateTime类型ToString时要显示AM/PM怎么办
- 取视频的第一帧作为初始页面
- 设计模式之单例模式(Singleton)
- armv6, armv7, armv7s的区别
- 南阳理工OJ_题目44 子串和
- HDOJ1856 More is better 【并查集】
- [POJ1062] 昂贵的聘礼 枚举等级 + dijkstra
- Bootstrap3.0入门学习系列(二)视频学习篇
- 适配器创建Spinner列表框
- java-Collections对象的降序排序--实例
- struts2实现分页显示