public class Singleton {
private static Singleton singleton;
// 构造函数私有化
private Singleton () {}
// 提供一个全局的静态方法
public static Singleton getSingleton () {
if (singleton== null) {
singleton= new Singleton ();
}
return singleton;
}
恶汉模式:资源使用率不高,即使getSingleton()不会执行,但是该类仍然会初始化。
public class Singleton{
// 在类被加载进入内存的时候就创建单一的Singleton对象
public static final Singleton singleton= new Singleton();
// 构造函数私有化
private Singleton() {}
// 提供一个全局的静态方法
public static Singleton getSingleton() {
return singleton;
}
}
优化后的懒汉模式:解决了多线程操作的问题,也避免了资源浪费。
public class Singleton{
private static Singleton singleton;
// 构造函数私有化
private Singleton() {}
// 提供一个全局的静态方法
public static Singleton getSingleton() {
if (singleton== null) {
synchronized (Singleton.class) {
if (singleton== null) {
singleton= new Singleton();
}
}
}
return singleton;
}
}
public class SingleTon {
//将构造函数私有化
private SingleTon() {}
public static SingleTon getInstance() {
return SingleTonHoulder.singleTon ;
}
//静态内部类
public static class SingleTonHoulder {
private static final SingleTon singleTon = new SingleTon();
}
}
枚举实现:Android开发中不推荐使用(Enums ofter require more than twice as much memory as static constants. You should strictly avoid using enums on Android.)。
public enum Singleton{
//定义一个枚举的元素,它就是Singleton的一个实例
INSTANCE;
public void toDO(){
// do something ...
}
public static void main(String[] args){
Singleton singleton = Singleton.INSTANCE;
singleton.doSomething();
}