黑马程序员技术交流社区

标题: 单例设计模式问题 [打印本页]

作者: wjj410830911    时间: 2013-11-18 10:43
标题: 单例设计模式问题
老师教了我们2种单列设计模式
  1. (1)饿汉式
  2.         class Single{
  3.                 private Single(){
  4.                 }

  5.                 static Single s = new Single();

  6.                 public static Single getInstance(){
  7.                         return s;
  8.                 }
  9.         }
复制代码
第二种
  1. (2)懒汉式
  2.         class Single {
  3.                 private Single(){}

  4.                 private static Single s;

  5.                 public static Single getInstance(){
  6.                         if(s==null){
  7.                                 s = new Single();
  8.                         }
  9.                         return s;
  10.                 }
  11.         }
复制代码
这两种 有什么区别吗?  一般都用那种?   什么时候用啊?
作者: 不抛弃不放弃    时间: 2013-11-18 10:56
饿汉式:
   对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。

懒汉式:
   对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。
   一般用饿汉式
什么时候用/?
对一些类来说,只有一个实例是很重要的。例如很多时候对于某个系统只需要拥有一个全局对象,这样有利于我们协调系统的整体行为。
再比如说某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象
再通过这个单例对象获取这些配置信息。从而简化了在比较复杂的环境下配置管理。




作者: 卑微の小幸福    时间: 2013-11-18 12:12
两种方法各有其长:
饿汉式 :先创建对象,对单例的诠释更加权威,但是先创建嘛,会产生点点预先的垃圾。

懒汉式 :是在需要时调用他是再创建对象,可以节约内存空间。但是在多线程中会有弊端,可能不能保证单例,

一般开发用饿汉式,但好像面试考懒汉式,所以两种都要掌握!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2