锁定老帖子 主题:学习单例模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (9)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-26
最后修改:2008-12-05
看了下单例模式,个人理解就是只能有一此实例化,这样对性能有一定提高。 下面说说学习小例子: public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } public void sys(String s){ System.out.println(s+"singleton........."); } }
此类就是一个单例类,里面我写了一个方法 测试此类: public class TestSingletion { public static void main(String args[]){ Singleton.getInstance().sys("fdsfds"); } }
只能通过Singleton.getInstance()得到实例,调用类中方法。 这就是一个单例模式。
网上还有一种方法是: public class Singleton { private static Singleton instance = null; private Singleton(){ //应该加上这个 } public static synchronized Singleton getInstance(){ if(instance==null){ instance = new Singleton(); } return instance; } public void sys(String s){ System.out.println(s+"singleton........."); } } 网上说可以这样可以防止多个实例。 而我用测试类进行测试时,却可以实例化此类,不知道为何,谢谢能有人讨论下。
在各位的帮助下,我知道错了,谢谢
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-01
可能是构造器没有私有化。
|
|
返回顶楼 | |
发表时间:2008-12-01
哎,管理员在哪里啊~~~
发现只要不是纯技术问题,均可以在论坛(非入门版)里混~ |
|
返回顶楼 | |
发表时间:2008-12-01
晕,你第二个写的 构造器都没私有化 叫什么单例子啊
|
|
返回顶楼 | |
发表时间:2008-12-02
chenpingtai2008 写道 晕,你第二个写的 构造器都没私有化 叫什么单例子啊 小弟刚来的,学习喽,楼上说的对! |
|
返回顶楼 | |
发表时间:2008-12-02
楼主,第二个例子给类加上私有构造函数就可以了
private Singleton(){} 第一个类加载时生成实例;第二个是第一次调用时生成实例,通过synchronized保证唯一。 |
|
返回顶楼 | |
发表时间:2008-12-02
nevergiveup3 写道 可能是构造器没有私有化。
下面那个 不是可能 是确实没把构造函数private |
|
返回顶楼 | |
发表时间:2008-12-02
谢谢大家了
|
|
返回顶楼 | |
发表时间:2008-12-02
synchronized 估计不好,虽说保证了没人调用时没有实例,但是调用者多了,还受同步限制,得不偿失、
|
|
返回顶楼 | |
发表时间:2008-12-02
tou3921 写道 synchronized 估计不好,虽说保证了没人调用时没有实例,但是调用者多了,还受同步限制,得不偿失、
支持!! 这也是为什么有了下面这篇文章: http://www.ibm.com/developerworks/java/library/j-dcl.html |
|
返回顶楼 | |