单态模式
- 单例类只有一个实例,也就是一个类只能创建一个对象
- 而且该对象只能由该类本身创建:所以类的构造方法必须是
private
的 - 单例类必须给其他对象提供这一个实例
方法1
错误版本
public class Singleton {
private Singleton singleton = new Singleton();
private Singleton(){
}
public Singleton getSingleton(){
return singleton;
}
}
- 尝试调用实例化这个类

- 因为不可能由外部的类来实例化单例类,因为单例类的构造方法都是私有的
- 那如何解决?
- 提供静态方法就好!
- 这样就无需创建对象,就可以获得由其内部产生的实例
正确版本
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getSingleton(){
return singleton;
}
}
方法2:和方法1无本质区别
public class Singleton {
private static Singleton singleton;
private Singleton(){
}
public static Singleton getSingleton(){
if (singleton == null){
singleton = new Singleton();
}
return singleton;
}
}