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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 探花 中级黑马   /  2014-3-23 22:27  /  960 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请高手给看看,下面代码有什么错误,怎么运行不行:
class Test01_LazySingleton
{
        public static void main(String[] args)
        {
                LazySingleton ls1= LazySingleton.getLazySingleton();
                LazySingleton ls2= LazySingleton.getLazySingleton();
                System.out.println(ls1);
                System.out.println(ls2);
                System.out.println(ls1==ls2);

        }
}
class LazySingleton
{
        private static LasySingleton lasysingleton;
        private LazySingleton()
                {
        }
        public static LasySingleton getLasysingleton(){
                if (LazySingleton == null)
                        lazySingleton = new LazySingleton();
                return lazySingleton;
                }

}
里面的   getLasysingleton(),什么时候创建?有高手能看懂希望给添加一下注释,。。。谢谢

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

5 个回复

倒序浏览
这个是设计模式的单例设计模式:::

而且是单例模式中的饿汉式。
单例模式分为  懒汉式和饿汉式之分。

下面举例说明:

单例设计模式解决的问题,以及设计思想。代码体现,全部都要会!
//饿汉式---开发常用
class Single
{
        //2,自定义一个本类对象。
        private static Single s = new Single(); //
          //1,私有化构造函数。
        private Single(){}

        //3,定义一个方法返回该对象。让其他程序通过这个方法就可以获取该对象。
        public static Single getInstance()  //建立方法是为了可控。
        {
                System.out.println("s="+s);
                return s;
        }
}





//懒汉式: 延迟加载模式。 面试常用
class Single2
{
        private static Single2 s = null;
        // 静态方法只能访问静态成员,所以static
    //  加private,为了使其访问(可控的)方法
        private Single2(){}

        public static Single2 getInstance()//因为下面只能类名调用,所以static方法
        {
                if(s==null)
                        s = new Single2();
                return s;
        }
}


设计了这种模式后。,,不能再New对象类,,,只能通过他的方法来访问对象的。。
你的是可以通过    public static LasySingleton getLasysingleton(){
                if (LazySingleton == null)
                        lazySingleton = new LazySingleton();
                return lazySingleton;
                }
方法来访问》》


评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
public class Test01_LazySingleton {
        public static void main(String[] args) {

                LazySingleton ls1 = LazySingleton.getLazysingleton();
                LazySingleton ls2 = LazySingleton.getLazysingleton();
                System.out.println(ls1);
                System.out.println(ls2);
                System.out.println(ls1 == ls2);

        }
}
class LazySingleton {
        private static LazySingleton lazysingleton;

        private LazySingleton() {
        }

        public static LazySingleton getLazysingleton() {
                if (lazysingleton == null)
                        lazysingleton = new LazySingleton();
                return lazysingleton;
        }

}
这是一个懒汉式的单例设计模式,你的代码逻辑没有错误,只是很多地方类名 方法名上下不一致,本来类名是LazySingleton你很多地方写成LasySingleton,还有很多地方大小写不一致,在这里不在说了,你细看就能发现,上面是我改过后的代码,可以运行

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
awkflf11 发表于 2014-3-23 22:41
这个是设计模式的单例设计模式:::

而且是单例模式中的饿汉式。

谢谢,说的很详细
回复 使用道具 举报
郭黎明 发表于 2014-3-23 23:22
public class Test01_LazySingleton {
        public static void main(String[] args) {

谢谢:)   
回复 使用道具 举报
不客气,昨天没上来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马