第一种形式: 定义一个类,它的构造函数为 private 的,它有一个 static 的 private 的该类变量,在类初始化时实例话,通过一个 public 的getInstance方法获取对它的引用,继而调用其中的方法。 |
public class Singleton { |
private Singleton(){} |
//在自己内部定义自己一个实例,是不是很奇怪? |
//注意这是private 只供内部调用 |
private static Singleton instance = new Singleton(); |
//这里提供了一个供外部访问本class的静态方法,可以直接访问 |
public static Singleton getInstance() { |
return instance; |
} |
} |
第二种形式: |
public class Singleton { |
private static Singleton instance = null ; |
public static synchronized Singleton getInstance() { |
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 |
//使用时生成实例,提高了效率! |
if (instance== null ) |
instance= new Singleton(); |
return instance; } |
} |