黑马程序员技术交流社区

标题: 怎样写单例设计模式? [打印本页]

作者: 怀瑾    时间: 2015-11-17 17:55
标题: 怎样写单例设计模式?
一,单例模式
饿汉式不会存在安全隐患
懒汉式在多线程访问时会有一定的几率创建多个对象,存在安全隐患
//单例设计模式-饿汉式
class ehan {
        //1,私有构造函数
        private ehan(){}
        //2,创建本类对象
        private static ehan s = new ehan();
        //3,对外提供公共的访问方式
        public static ehan gete(){
                return s;
        }
}
//单例设计模式-懒汉式
class lanhan{
        //1,私有构造函数
        private lanhan(){}
        //2,声明本类对象
        private static lanhan l;
        //3,对外提供公共的访问方式
        public static lanhan getl(){
                if (l == null){
                        l = new lanhan();
                }
                return l;
        }
}
//单例设计模式-拓展方法
class wanneng{
        //1,私有化构造函数
        private wanneng(){}
        //2,创建公有本类对象并设为最终的
        public static final wanneng wn = new wanneng();
}
作者: kunsongjack    时间: 2015-11-17 18:19
妹子 加油!
作者: 刘旭波    时间: 2015-11-17 19:11
万能这个思路是咋想的,还是不大理解
作者: 芸芸众生    时间: 2015-11-17 19:35
完全搞不懂的路过!
作者: 1379号监听员    时间: 2015-11-17 23:34
万能类好评!另外妹子你有男朋友吗?
作者: xiao15779706    时间: 2015-11-18 08:37
懒汉式那样写的话多线程应该会有安全问题吧应该加个同步

class Single
{
    private static Single s=null;
    private Single(){};
    public static Single getInstance()
    {
         if(s==null)
         {
             synchronized(Single.class)
             {
                  if(s==null)
                     s=new Single();
             }
         }
        return s;
    }
}


加一个同步解决多线程安全问题  双重判断解决效率问题
作者: ln0491    时间: 2015-11-18 11:48
不错。。。。。。学习了。。。。。
作者: 何必ˇㄨ那么假    时间: 2016-3-16 23:37
表示完全不一样   I 如果是浪值  就给 I 赋值  new lanhan();   返回 I  的值




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