黑马程序员技术交流社区

标题: Java基础学习,一个简单的单例设计例子 [打印本页]

作者: 巴银    时间: 2015-4-17 00:38
标题: Java基础学习,一个简单的单例设计例子
本帖最后由 巴银 于 2015-4-17 00:42 编辑

单例设计模式是23种Java设计模式的其中一种,它解决的问题是:一个类在内存中只存在一个对象。下面是代码实现的过程:
class Single {
        private Single() { } /*为了禁止其他程序建立该类对象,所以把该类用private进行私有化。*/
        static Single s=new Single(); /*因为Single类已经被私有化,其他程序不能再创建该类对象,所以事先在类中自定义一个对象,好让其他程序进行访    问。用static 修饰是因为下面的getInstance()方法为静态方法,该方法访问的成员变量 s,也必须是静态的。*/
        private static Single getInstance(){  /*创建一个方便于其他程序访问该类对象的一个方法,为了使方法能返回Single类的对象,所以方法类型要定义成 Single类型,用static修饰是为了能用类名访问该方法,因为其他程序无法通过用Single类创建对象来访问getInstance()方法。*/
             return s;
}
}
class SingleDemo{
        public static void main(String [] args){
               Single s1=Single.getInstance(); /* 用类名调用getInstance()方法,得到对象s,那么对象s1的值也是s。这样就保证了Single类的对象在内存中的唯一性。*/
}
}

作者: sisel    时间: 2015-4-17 09:49
静态成员static Single s应该声明为私有,否则可以这样:Single.s=null,
作者: 巴银    时间: 2015-4-17 10:02
sisel 发表于 2015-4-17 09:49
静态成员static Single s应该声明为私有,否则可以这样:Single.s=null,

嗯,对,谢谢提醒,我还是需要多加巩固。:handshake
作者: lwj123    时间: 2015-4-17 10:16
这个是饿汉式的,能总总结一些懒汉式的就比较好了
作者: 关山明月    时间: 2015-4-17 10:23
getInstance() 方法应该定义成公有的,而不是private
作者: 巴银    时间: 2015-4-17 11:51
lwj123 发表于 2015-4-17 10:16
这个是饿汉式的,能总总结一些懒汉式的就比较好了

嗯,好,毕老师说开发用饿汉式比较多,懒汉式的我还没掌握熟练,今天回去之后再总结一下,谢谢版主关心,:handshake
作者: 漫步云端~    时间: 2015-4-18 22:22
不错不错




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