之前三篇博客介绍了3中工厂模式,本篇博客介绍单例模式。
单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
一般单例模式可分为饿汉式和懒汉式,代码如下:
/*
* 饿汉单例
*/
public class SingletonA {
private static SingletonA intance = new SingletonA();
private SingletonA(){}
public static SingletonA getIntance(){
return intance;
}
}
/*
* 懒汉单例
*/
public class SingletonB {
private static SingletonB intance;
private SingletonB(){}
public static SingletonB getIntance(){
if (intance == null) {
synchronized (SingletonB.class) {
if (intance == null)
intance = new SingletonB();
}
}
return intance;
}
}
这两种方式都是线程安全的,饿汉模式读取更快,所在内存空间更大,因为饿汉模式在类加载时就初始化了,而且是静态的,内存不会被回收。而懒汉模式特点和饿汉刚好相反,读取慢,占内存小。