黑马程序员技术交流社区

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

作者: 刘郑瑞    时间: 2013-1-15 23:57
标题: 单例设计模式
单例设计模式虽然是老话题了,但是它使用的频率如此之高。看着毕老师的视频,我感觉还是有必要总结一下。
   //饿汉模式
public class SingleTon {
        //设计成私有化构造方法,不让别处创建对象
        private SingleTon(){}
        private  static SingleTon instance = new SingleTon();
        //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间。       
        public static SingleTon getInstance(){
                //获取一个实例对象
                return instance;
        }
}
//懒汉模式
public class SingleTon {
        private SingleTon(){}
       
        private static instance = null;
        //必须加上synchronized不然多线程访问是不安全的
        public static synchronized SingleTon getInstance(){
                //不占内存空间,访问时如果对象不存在会创建相应的一个对象。
                if(instance == null)
                        instance = new SingleTon();
                return instance;
        }
}
//当然还有最新的技术----枚举
public enum SingleTon{
        //新技术就是牛,枚举原是c语言中的,虽然java号称把c语言中一些臃肿的东西给去掉了,但是经典就是经典。枚举它又归来啦!
        MON;
}
作者: 黄锦成    时间: 2013-1-16 12:23
懒汉式建议优化一下
//懒汉模式
public class SingleTon {
        private SingleTon(){}
        
        private static instance = null;
        //必须加上synchronized不然多线程访问是不安全的
        public static SingleTon getInstance(){
                //不占内存空间,访问时如果对象不存在会创建相应的一个对象。
                if(instance == null){
                              synchronized(SingleTon.class){
                                            if(instance == null){
                                                              instance = new SingleTon();
                                            }
                              }
                }
                return instance;
        }
}




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