我一直在经历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();
然后我多次按下按钮,令我惊讶的是我在我的logcat中发现了这个:
这应该只发生一次 这应该只发生一次 这应该只发生一次 这应该只发生一次
我认为singleton classe的方法只执行一次......这怎么可能?
答案 0 :(得分:2)
似乎与Singletons
有一点误会。
单身人士只能初始化一次,这意味着只能有一个实例。当然,静态方法将在每次调用时执行,但返回的实例将始终是完全相同的。
答案 1 :(得分:1)
简而言之,单身人士模式意味着:
new YourClass()
因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例。
多数民众赞成。有了这个,只能创建一个对象,所以对象的所有可能实例实际上是相同的,但当然,无论调用多少次,都会正常执行对该对象的任何公共方法的任何调用。