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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄蒙 中级黑马   /  2015-8-12 20:51  /  533 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 单例设计模式
* 懒汉式(延迟加载):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();
               
        }

}

8 个回复

倒序浏览
这个貌似是面向对象里面的知识点
回复 使用道具 举报
.................................
回复 使用道具 举报
总结的很好!很全面!
回复 使用道具 举报
理解概念再来看代码,更深刻
回复 使用道具 举报
加油哦{:2_30:}
回复 使用道具 举报
可以,学习了
回复 使用道具 举报
就2个模式,还有装饰,和设计模式
回复 使用道具 举报
墨琰 中级黑马 2015-8-12 22:48:54
9#
懒汉和饿汉,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马