设计模式复习,代码是最好的说明。
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。属于创建类模式。
要素:1、私有的构造方法 2、指向自己实例的静态引用 3、以自己实例为返回值的公有的方法
懒汉:
public class Singleton {
private static Singleton singleton;
private Singleton(){};
//加synchronized可使线程安全
public static Singleton getInstance(){
if (singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉:
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){};
public static Singleton getInstance(){
return singleton;
}
}
特殊-静态内部类:
public class Singleton {
//两个final关键字非必需
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
这种方式想达到的目的是延时加载Singleton,即调用时主动加载,原因是静态内部类不会在其外部类被加载的同时被加载。细想来,静态内部类玩法很多,学习静态内部类也能帮助更好地理解很多java的基本原理。
参考http://cantellow.iteye.com/blog/838473
如有错误,欢迎纠正!