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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 真实姓名被注册 中级黑马   /  2015-8-7 00:40  /  126 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设计模式是解决某一类问题最行之有效的办法,Java中有23种设计模式。单例设计模式解决一个类在内存中只存在一个对象。想要保证对象唯一:(1)为了避免其它程序过多建立该类对象,先禁止其它程序建立该类对象;(2)同时为了让其它程序可以访问到该类对象,只好在本类中,自定义一个对象;(3)为了方便其它程序对自定义对象的访问,可以对外提供一些访问方式。         代码如下:
class single{
private static single s=new single();
private single(){

}
public static single getInstance(){
  return s;
}
}

        上例在对象被使用前先初始化创建,称为饿汉式。下例是对象在被使用时才初始化创建,称为懒汉式,也称为对象的延迟加载。
        代码如下:
class single1{
private static single s=null;
private single(){

}
public static single getInstance(){
  if(s==null)
     return new single();
                return s;
}
}
     single类加载进内存时,single对象就已经存在于堆内存中,而single1类加载进内存时,single对象要等到被使用时才创建在堆内存中。
       采用懒汉式要注意多线程的安全问题,需要对getInstance()方法加同步。
class single1{
private static single s=null;
private single(){

}
public static synchronized single getInstance(){
  if(s==null)
     return new single();
                return s;
}
}
  加同步后,程序运行就比较低效,可加双重判断,减少判断锁的次数,但代码编写较为复杂。
class single1{
private static single s=null;
private single(){

}
public static single getInstance(){
      if(s==null){
   synchronized(single.class){
   if(s==null)
       return new single();
           }
       }      
      return s;
}
}
实际编程时,多采用饿汉式。


1 个回复

倒序浏览
以前懒汉式和饿汉式总记不到,现在差不多了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马