单例类的标准写法

大部分情况下,我们把类的构造器设置成public权限,允许创建多个对象。

如果一个类始终只能允许创建一个对象,则需要用private修饰该类的构造器,将构造器隐藏起来,并提供给外界一个唯一的public访问点,用于外部创建唯一的对象。也就是单例类。

因为在调用该 public 方法之前,肯定是没有对象的,所以调用的时候肯定是类调用,注意需要用 static修饰该 public 方法。

该类需要使用一个成员变量来缓存以前创建过的对象,因为要被static getInstance方法调用,所以必须用 static 修饰。

class Singleton {

   //使用一个变量来缓存曾经创建的实例
   private static Singleton instance;

   //对构造器使用 private修饰,隐藏构造器
   private Singleton() {}

   //提供一个外界访问的入口点,用static修饰
   //因为调用该方法之前,没有对象,只能通过类来调用
   public static Singleton getInstance() {

    if(instance == null) {
         instance = new Singleton();           
}
return instance;
}
}

public class SingletonTest {

   public static void main(String[] args) {
          Singleton s1 = Singleton.getInstance();
          Singleton s2 = Singleton.getInstance();
          System.out.println(s1 == s2); //将输出true
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章