设计模式中饿汉式单例类和懒汉式单例类
来源:互联网 发布:枪神纪刷枪软件 编辑:程序博客网 时间:2024/06/09 14:49
单例模式的特点为:
*单例类只有一个实例。
*单例类必须自己创建自己的唯一实例。
*单例类必须给所有其他对象提供这一实例。
饿汉式单例类:
而饿汉式单例类则在java语言中是最为简单的单例类,这是一个描述饿汉式单例类的类图的实现。
此类图中,此类已经将自己实例化。
源码为:
package singleton;public class EagerSingleton {private static EagerSingleton instance=new EagerSingleton();/** * 私有的默认构造子 * @return */public EagerSingleton(){}/** * 静态工厂方法 * @return */public static EagerSingleton getInstance(){return instance;}}可以看出,在这个类被加载时,静态变量instance已经实例化,此时类的私有构造方法就会被调用,这时,
单例类的唯一实例对象就被创建出来。
在单例类中一个最重要的特点就是类的构造方法是私有的,因此,该类无法被继承。
懒汉式单例类:
与饿汉式单例类相同之处是类的构造方法是私有的,与饿汉式单例类不同的是,懒汉式单例类,在第一次被引用时将自己实例化,
如下图所示,uml类图中给出了一个典型的懒汉式单例类实现。
懒汉式的源码为:
package singleton;public class LazySingleton {private static LazySingleton instance=null;/** * 私有的构造函数,保证外界无法实例化 */private LazySingleton(){}/** * 静态工厂方法,返回此类的唯一实例 */public synchronized static LazySingleton getInstance(){if(instance==null){instance=new LazySingleton();}return instance;}}
饿汉式单例类和懒汉式单例类,饿汉式单例类在自己被加载时就将自己实例化,即便加载器是静态的,
在饿汉式单例类被加载时仍会将自己实例化,单从资源利用效率角度来讲,这个比懒汉式单例类稍差些。
但从速度和反应时间角度来讲,则比懒汉式单例类稍好些,然而,懒汉式单例类在实例化时,必须要处理好
在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器在实例化必然涉及资源初始化,
而资源初始化可能会很费时间,这意味着出现多线程同时引用此类的几率变得较大。
2 0
- 设计模式中饿汉式单例类和懒汉式单例类
- 设计模式:懒汉式和饿汉式
- 设计模式 -- 懒汉模式
- 懒汉式设计模式
- 懒汉式单例设计模式
- 设计模式-单例模式之饿汉式和懒汉式
- 设计模式------单例模式之饿汉式和懒汉式
- 黑马程序员-单例设计模式:懒汉式和饿汉式
- 单例设计模式(饿汉式和懒汉式)
- 单例设计模式(懒汉式和饿汉式区别)
- 《单例设计模式之饿汉式和懒汉式》
- Java单例设计模式(饿汉式和懒汉式)
- java设计单例模式【饿汉式和懒汉式】
- 黑马程序员--懒汉式和饿汉式单例设计模式
- Java---15---单例设计模式:---饿汉式和懒汉式
- 单例设计模式中懒汉式和饿汉式
- 黑马程序员-单例设计模式:“饿汉式”和“懒汉式”
- 单例设计模式-饿汉式和懒汉式
- Java并发编程之闭锁CountDownLatch简介
- POJ1274 The Perfect Stall【二分图最大匹配】
- 2015--阿里内推--测试开发--技术一面--(通过)
- java用cmd,import自己写的类。出现问题:无法找到或加载主类
- 分布式系统架构之消息系统
- 设计模式中饿汉式单例类和懒汉式单例类
- POJ2239 Selecting Courses【二分图最大匹配】
- xpages的combobox提前输入值
- 【二维树状数组优化dp】[Scoi2014] bzoj3594方伯伯的玉米田
- 假如编程易懂得,那么。。。
- 泛函编程(9)-异常处理-Option
- Hibernate之综合问题
- 我答同行问(续四)
- Unity角色控制角色不穿过场景模型