A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjj410830911 中级黑马   /  2013-11-18 10:43  /  934 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

老师教了我们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.         }
复制代码
这两种 有什么区别吗?  一般都用那种?   什么时候用啊?

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

2 个回复

倒序浏览
饿汉式:
   对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。

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



评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
两种方法各有其长:
饿汉式 :先创建对象,对单例的诠释更加权威,但是先创建嘛,会产生点点预先的垃圾。

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

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

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马