黑马程序员,黑马论坛-------单例模式的两种实现(恶汉+懒汉)
文章来源:黑马程序员,黑马论坛
单列模式的实现主要有两种:饿汉式单例类和懒汉式单例类
1)饿汉式单例类
代码清单1:饿汉式单例类
public class EagerSingleton{
private static final EagerSingleton m_instance = new EagerSingleton();
/*** 私有的默认构造子*/
private EagerSingleton() { }
/*** 静态工厂方法*/
public static EagerSingleton getInstance(){
return m_instance;
}
}
读者可以看出,在这个类被加载时,静态变量m_instance 会被初始化,此时类的私有
构造子会被调用。这时候,单例类的惟一实例就被创建出来了。
Java 语言中单例类的一个最重要的特点是类的构造子是私有的,从而避免外界利用构
造子直接创建出任意多的实例。值得指出的是,由于构造子是私有的,因此,此类不能被
继承。
2)懒汉式单例类。与饿汉式单例类相同之处是,类的构造子是私有的。与饿汉式单例类不同的是,懒汉
式单例类在第一次被引用时将自己实例化。如果加载器是静态的,那么在懒汉式单例类被
加载时不会将自己实例化
代码清单2:懒汉式单例类
package com.javapatterns.singleton.demos;
public class LazySingleton{
private static LazySingleton m_instance = null; 加载时并不创建对象,而是在需要的时候在创建
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private LazySingleton() { }
/*** 静态工厂方法,返还此类的惟一实例*/
synchronized public static LazySingleton
getInstance(){
if (m_instance == null)
{ m_instance = new LazySingleton();
}
return m_instance;
}
}
读者可能会注意到,在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,
以处理多线程环境。有些设计师在这里建议使用所谓的“双重检查成例”。必须指出的是,
“双重检查成例”不可以在Java 语言中使用。
|
黑马程序员,黑马论坛-------单例模式的两种实现(恶汉+懒汉)相关推荐
- 黑马程序员-黑马程序员训练营基础测试
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...
- 黑马程序员--黑马程序员CEO方立勋致全体员工和同学们的公开信
文章来源:黑马程序员,黑马论坛 黑马程序员全体同仁和各位同学: 大家好! 首先感谢全体员工和黑马1-5届老学员在张孝祥老师年前不幸去世以来,在北京悲痛万分而又异常寒冷的冬夜,你们通宵达旦的援手和帮助. ...
- 黑马程序员------黑马基础测试题参考
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马基础测试题抽中了几道比较复杂的题目,,已测试完美运行. 因为是零基础所以写的不好请见谅.如果 ...
- 黑马程序员——黑马诗歌
黑马的勇士冲啊!!!用我们的战靴踏遍世界!!! 程序猿万岁!!!!! JAVA在前进,道路畅通无阻! Android整装待命! 要去消灭专制,开拓自由之路. 像我们父辈一样,时刻准备作最后冲击! 死神 ...
- 黑马程序员——黑马学习日志之二十 Java高新技术(二)
------- android培训.java培训.期待与您交流! ---------- 黑马学习日志之二十 Java高新技术(二) 1枚举 问题:要定义星期几或性别的变量,该怎么定义? 假设用1-7分 ...
- 黑马程序员,黑马论坛----黑马.Net8期,就业率98.61%,平均薪水5722元!
来源:黑马论坛,黑马程序员 黑马.Net8期,就业率98.48%,平均薪水5722元! 班级名称:黑马.Net 8期 毕业时间:2013年11月9日 总人数:66 班 ...
- 黑马程序员高薪就业学习方法揭秘
---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 黑马程序员高薪就业学习方法揭秘 黑 ...
- php 恶汉单例,单例模式的两种方式(恶汉式,懒汉式)
单例模式的两种形式(恶汉式,懒汉式) 单例模式的特点:解决了一个类在内存的唯一性,这个类的对象只有一个. 写单例模式的步骤: 1. 私有修饰构造方法 2. 在本类的成员位置, new 自己类的对象 3 ...
- 黑马程序员,黑马论坛----黑马.Net9期毕业60天,就业率已达100%,平均薪水6236.17元
来源:黑马程序员,黑马论坛 黑马.Net9期,毕业60天,100%全部就业,平均薪水6236元! 班级名称:黑马.Net 9期 毕业时间:2014年1月21日 总人数:47 班 ...
最新文章
- AppDynamics把业务交易跟踪扩展到SAP环境
- 干粮 -- 计算机程序设计艺术(The Art of Computer Design) - 2
- php函数多个参数_php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
- 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法
- C++Fenwick tree芬威克树的实现算法(附完整源码)
- 使用 case when进行行列转换
- c++primer第五版,p134页第2题自编程序
- 实现根据id查询房源数据的GraphQL服务
- 【PAT甲级 十进制转十三进制】1027 Colors in Mars (20 分) Java版 5/5通过
- 苹果手机数据线充不了电_手机充电器充不了电?其实4招就能解决
- 【转】linux下安装ssh服务器端及ssh的安全配置
- matlab图像隐写,matlab软件图像处理相关内容.ppt
- ae 地理坐标与投影坐标转换 [转]
- Summernote个性化定制使用帮助(二)
- Uniscribe文字自动换行
- 彻底解决git中.gitignore文件失效原因及解决办法
- Office2007 三合一绿色精简版
- .NET代码混淆——开源.net 混淆器ConfuserEx介绍
- PIC单片机应用开发实践教程(一):MPLAB X IDE 开发环境安装
- 在matlab使用矩阵的方法计算DFT