单例模式(基础版)
单例模式分为饿汉式和懒汉式,此篇博文仅分析最基础的版本,不考虑线程问题。
单例模式最大的特点就是类的构造方法私有化,通过类的静态方法返回实例。
饿汉式
- 优点:线程安全
- 缺点:效率不高
public class SingleTon{
private static SingleTon single = new SingleTon(); // 首先通过构造方法创建对象
private SingleTon(){} //构造方法私有化
public static SingleTon getInstance(){ //通过getInstance方法返回实例
return single;
}
}
//main方法
SingleTon s1 = SingleTon.getInstance(); //静态方法直接调用
SingleTon s2 = SingleTon.getInstance();
System.out.println(s1 == s2); //true
懒汉式
- 优点:效率高
- 缺点:线程不安全
public class SingleTon{
private static SingleTon single = null;//创建空对象
private SingleTon(){} //构造方法私有化
public Static SingleTon getInstance(){ //通过静态方法返回实例
if(single == null){ //如果对象为空就创建新对象
single = new SingleTon();
}
return single; //返回实例
}
}
//main方法
SingleTon s1 = SingleTon.getInstance(); //静态方法直接调用
SingleTon s2 = SingleTon.getInstance();
System.out.println(s1 == s2); //true