黑马程序员技术交流社区

标题: 单例设计模式(总结) [打印本页]

作者: 黄蒙    时间: 2015-8-12 20:51
标题: 单例设计模式(总结)
/*
* 单例设计模式
* 懒汉式(延迟加载):1.定义1个私有的静态本类对象为空
*                 2.私有化构造函数,这里可以自行设计
*                 3.给出一个公有的静态方法可以获取本类对象,判断条件为本类对象为空
*                 (这里因为不能直接建立本类对象,只能通过类调用静态函数来得到本类对象)
*
* 饿汉式:1.定义1个私有静态的类对象
*                 2.私有化构造函数
*                 3.给出一个公共的静态方法可以返回本类对象,即第一步的本类对象;
*
* ???貌似懒汉式可以执行构造函数而饿汉式不能??
*
* @黄蒙
* */

//懒汉式
class a_SingleDesign{
        private static a_SingleDesign s=null;
        private a_SingleDesign()
        {
               
        }
        public static a_SingleDesign get_aSingle()
        {
                //加入双重判断锁保证了安全和效率
                if(s==null)
                {
                        synchronized(a_SingleDesign.class)
                        {
                                if(s==null)
                                {
                                         s=new a_SingleDesign();
                                }
                        }
                }
                return s;
        }
        //-----------------以上为设计结果-----------------------//
        public void get_aResult()
        {
                System.out.println("懒汉式单例设计成功");
        }
       
}


//饿汉式
class b_SingleDesign{
        private static b_SingleDesign s=new b_SingleDesign();
        private b_SingleDesign()
        {
        }
        public static b_SingleDesign get_aSingle()
        {
                return s;
        }
        //-----------------以上为设计结果-----------------------//
        public void get_aResult()
        {
                System.out.println("饿汉式单例设计成功");
        }
       
}



public class SingleDesign {

        public static void main(String[] args) {
               
                a_SingleDesign a1=a_SingleDesign.get_aSingle();
                a1.get_aResult();
                a_SingleDesign a2=a_SingleDesign.get_aSingle();
                a2.get_aResult();
               
                b_SingleDesign b1=b_SingleDesign.get_aSingle();
                b1.get_aResult();
                b_SingleDesign b2=b_SingleDesign.get_aSingle();
                b2.get_aResult();
               
        }

}


作者: 熊猫超仁    时间: 2015-8-12 20:59
这个貌似是面向对象里面的知识点
作者: 黑色幽默K    时间: 2015-8-12 21:38
.................................
作者: 小燕小男_爱情    时间: 2015-8-12 21:44
总结的很好!很全面!
作者: 两木三水    时间: 2015-8-12 21:44
理解概念再来看代码,更深刻
作者: heihie    时间: 2015-8-12 21:50
加油哦{:2_30:}
作者: 愤怒的哈博兔    时间: 2015-8-12 22:39
可以,学习了
作者: 晚上没饭吃    时间: 2015-8-12 22:44
就2个模式,还有装饰,和设计模式
作者: 墨琰    时间: 2015-8-12 22:48
懒汉和饿汉,哈哈




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