文章来源:黑马程序员,黑马论坛
单列模式的实现主要有两种:饿汉式单例类和懒汉式单例类
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 语言中使用。

黑马程序员,黑马论坛-------单例模式的两种实现(恶汉+懒汉)相关推荐

  1. 黑马程序员-黑马程序员训练营基础测试

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...

  2. 黑马程序员--黑马程序员CEO方立勋致全体员工和同学们的公开信

    文章来源:黑马程序员,黑马论坛 黑马程序员全体同仁和各位同学: 大家好! 首先感谢全体员工和黑马1-5届老学员在张孝祥老师年前不幸去世以来,在北京悲痛万分而又异常寒冷的冬夜,你们通宵达旦的援手和帮助. ...

  3. 黑马程序员------黑马基础测试题参考

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马基础测试题抽中了几道比较复杂的题目,,已测试完美运行. 因为是零基础所以写的不好请见谅.如果 ...

  4. 黑马程序员——黑马诗歌

    黑马的勇士冲啊!!!用我们的战靴踏遍世界!!! 程序猿万岁!!!!! JAVA在前进,道路畅通无阻! Android整装待命! 要去消灭专制,开拓自由之路. 像我们父辈一样,时刻准备作最后冲击! 死神 ...

  5. 黑马程序员——黑马学习日志之二十 Java高新技术(二)

    ------- android培训.java培训.期待与您交流! ---------- 黑马学习日志之二十 Java高新技术(二) 1枚举 问题:要定义星期几或性别的变量,该怎么定义? 假设用1-7分 ...

  6. 黑马程序员,黑马论坛----黑马.Net8期,就业率98.61%,平均薪水5722元!

    来源:黑马论坛,黑马程序员 黑马.Net8期,就业率98.48%,平均薪水5722元! 班级名称:黑马.Net 8期       毕业时间:2013年11月9日      总人数:66 班       ...

  7. 黑马程序员高薪就业学习方法揭秘

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 黑马程序员高薪就业学习方法揭秘 黑 ...

  8. php 恶汉单例,单例模式的两种方式(恶汉式,懒汉式)

    单例模式的两种形式(恶汉式,懒汉式) 单例模式的特点:解决了一个类在内存的唯一性,这个类的对象只有一个. 写单例模式的步骤: 1. 私有修饰构造方法 2. 在本类的成员位置, new 自己类的对象 3 ...

  9. 黑马程序员,黑马论坛----黑马.Net9期毕业60天,就业率已达100%,平均薪水6236.17元

    来源:黑马程序员,黑马论坛 黑马.Net9期,毕业60天,100%全部就业,平均薪水6236元! 班级名称:黑马.Net 9期      毕业时间:2014年1月21日      总人数:47 班  ...

最新文章

  1. AppDynamics把业务交易跟踪扩展到SAP环境
  2. 干粮 -- 计算机程序设计艺术(The Art of Computer Design) - 2
  3. php函数多个参数_php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
  4. 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法
  5. C++Fenwick tree芬威克树的实现算法(附完整源码)
  6. 使用 case when进行行列转换
  7. c++primer第五版,p134页第2题自编程序
  8. 实现根据id查询房源数据的GraphQL服务
  9. 【PAT甲级 十进制转十三进制】1027 Colors in Mars (20 分) Java版 5/5通过
  10. 苹果手机数据线充不了电_手机充电器充不了电?其实4招就能解决
  11. 【转】linux下安装ssh服务器端及ssh的安全配置
  12. matlab图像隐写,matlab软件图像处理相关内容.ppt
  13. ae 地理坐标与投影坐标转换 [转]
  14. Summernote个性化定制使用帮助(二)
  15. Uniscribe文字自动换行
  16. 彻底解决git中.gitignore文件失效原因及解决办法
  17. Office2007 三合一绿色精简版
  18. .NET代码混淆——开源.net 混淆器ConfuserEx介绍
  19. PIC单片机应用开发实践教程(一):MPLAB X IDE 开发环境安装
  20. 在matlab使用矩阵的方法计算DFT

热门文章

  1. 灵动微电子MM32L0130系列MCU具有出色的低功耗表现
  2. CAD制图初学入门教程:一键解决CAD图纸杂乱
  3. 关于大学校园联网解决办法
  4. 微信更新8.0.8正式版,QQ大呼内行,可以改铃声
  5. Java开发实战!java环境搭建是什么意思
  6. 软件测试方法和测试流程
  7. App客户端架构演化之路
  8. Linux搭建测试环境教程
  9. 高胜率现货黄金走势图形
  10. 关于红黑二叉树的理解