java单例类不起作用
我已经经历了this tutorial,据我所知,单例类只能初始化一次。因此,我编写了以下1行代码:
public synchronized static DefaultHttpClient getThreadSafeClient {
**System.out.println("this should only happen once!!");**
然后,我在MainActivity的按钮中编写了以下代码行:
HttpClient httpclient = multithreaded_httpclient.getThreadSafeClient();
HttpClient httpclient1 = multithreaded_httpclient.getThreadSafeClient();
然后我多次按下该按钮,令我惊讶的是,我在日志中发现了以下内容:
这应该只发生一次 这应该只发生一次 这应该只发生一次 这应该只发生一次
我认为singleton classe的方法只执行一次。。。这怎么可能
# 1 楼答案
似乎有一个关于
Singletons
的小误解Singleton只能初始化一次,这意味着它只能有一个实例。当然,每次调用静态方法时都会执行它,但返回的实例始终是同一个实例
# 2 楼答案
简而言之,单例模式意味着:
new YourClass()
创建一个实例因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例
就这些。使用此方法只能创建一个对象,因此该对象的所有可能实例实际上都是相同的,但当然,对该对象的任何公共方法的任何调用都将正常执行,无论调用多少次