黑马程序员技术交流社区

标题: 请高手给看看那里错误, [打印本页]

作者: 探花    时间: 2014-3-23 22:27
标题: 请高手给看看那里错误,
请高手给看看,下面代码有什么错误,怎么运行不行:
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(),什么时候创建?有高手能看懂希望给添加一下注释,。。。谢谢


作者: awkflf11    时间: 2014-3-23 22:41
这个是设计模式的单例设计模式:::

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

下面举例说明:

单例设计模式解决的问题,以及设计思想。代码体现,全部都要会!
//饿汉式---开发常用
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;
                }
方法来访问》》



作者: 郭黎明    时间: 2014-3-23 23:22
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,还有很多地方大小写不一致,在这里不在说了,你细看就能发现,上面是我改过后的代码,可以运行
作者: 探花    时间: 2014-3-24 21:17
awkflf11 发表于 2014-3-23 22:41
这个是设计模式的单例设计模式:::

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

谢谢,说的很详细
作者: 探花    时间: 2014-3-24 21:18
郭黎明 发表于 2014-3-23 23:22
public class Test01_LazySingleton {
        public static void main(String[] args) {

谢谢:)   
作者: 郭黎明    时间: 2014-3-25 21:53
不客气,昨天没上来




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