Java 单例类不';行不通

Java 单例类不';行不通,java,android,Java,Android,据我所知,单例类只能初始化一次。因此,我编写了以下1行代码: public synchronized static DefaultHttpClient getThreadSafeClient { **System.out.println("this should only happen once!!");** 然后,我在MainActivity的按钮中编写了以下代码行: HttpClient httpclient = multithreaded_httpclient.getThread

据我所知,单例类只能初始化一次。因此,我编写了以下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的方法只执行一次。。。这怎么可能

似乎有一个关于
单身人士的小误解


Singleton只能初始化一次,这意味着它只能有一个实例。当然,每次调用静态方法时都会执行它,但返回的实例始终是相同的。

似乎有一个与
单例相关的小误解


Singleton只能初始化一次,这意味着它只能有一个实例。当然,每次调用静态方法时都会执行它,但返回的实例始终是相同的。

似乎有一个与
单例相关的小误解


Singleton只能初始化一次,这意味着它只能有一个实例。当然,每次调用静态方法时都会执行它,但返回的实例始终是相同的。

似乎有一个与
单例相关的小误解


Singleton只能初始化一次,这意味着它只能有一个实例。当然,每次调用静态方法时都会执行它,但返回的实例始终是同一个实例。

简而言之,Singleton模式意味着:

  • 类的构造函数是私有的
  • 您可以创建一个公共工厂方法,在其中处理:
    • 如果是第一次请求实例,请使用
      newyourclass()
    • 如果在上一次调用中已创建实例,则不创建新实例,而是返回上一个实例
因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例


就这些。使用此方法,只能创建一个对象,因此对象的所有可能实例实际上都是相同的,但当然,对该对象的任何公共方法的任何调用都将正常执行,无论调用多少次。

简言之,单例模式意味着:

  • 类的构造函数是私有的
  • 您可以创建一个公共工厂方法,在其中处理:
    • 如果是第一次请求实例,请使用
      newyourclass()
    • 如果在上一次调用中已创建实例,则不创建新实例,而是返回上一个实例
因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例


就这些。使用此方法,只能创建一个对象,因此对象的所有可能实例实际上都是相同的,但当然,对该对象的任何公共方法的任何调用都将正常执行,无论调用多少次。

简言之,单例模式意味着:

  • 类的构造函数是私有的
  • 您可以创建一个公共工厂方法,在其中处理:
    • 如果是第一次请求实例,请使用
      newyourclass()
    • 如果在上一次调用中已创建实例,则不创建新实例,而是返回上一个实例
因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例


就这些。使用此方法,只能创建一个对象,因此对象的所有可能实例实际上都是相同的,但当然,对该对象的任何公共方法的任何调用都将正常执行,无论调用多少次。

简言之,单例模式意味着:

  • 类的构造函数是私有的
  • 您可以创建一个公共工厂方法,在其中处理:
    • 如果是第一次请求实例,请使用
      newyourclass()
    • 如果在上一次调用中已创建实例,则不创建新实例,而是返回上一个实例
因此,当任何其他类需要该类的实例时,它们被强制调用该工厂方法,因为构造函数是私有的,并且在该方法内部,您编写代码以确保只有一个实例


就这些。使用此方法只能创建一个对象,因此该对象的所有可能实例实际上都是相同的,但当然,对该对象的任何公共方法的任何调用都将正常执行,无论调用多少次。

您的意思是说,无论调用多少次,只能与服务器建立一个连接?您提到的教程代码中没有连接,实际代码可能不同。问题是返回的总是同一个
DefaultHttpClient
实例。那么,您的意思是,无论您调用它多少次,都只会与服务器建立一个连接?您提到的教程代码中没有连接,实际代码可能不同。第