3.1 单例模式(Singleton)
单例模式(Singleton)是一种非常简单且容易理解的设计模式。顾名思义,单例即单一的实例,确切地讲就是指在某个系统中只存在一个实例,同时提供集中、统一的访问接口,以使系统行为保持协调一致。Singleton一词在逻辑学中指“有且仅有一个元素的集合”,这非常恰当地概括了单例的概念,也就是“一个类仅有一个实例”。
单例模式涉及到类负责创建自己的对象,同时保证只有该类只有一个对象被创建。并提供了访问唯一对象的方法,可以直接访问,不需要实例化该类的对象。
实现方法
单例设计模式分为两种:
- 饿汉模式:类加载就会实现该单例对象的创建
- 懒汉模式:类加载时不创建单例对象,而在首次使用到该对象的时候进行创建
饿汉模式:
public class Sun {
private static final Sun sun = new Sun();//自有永有的太阳单例
private Sun(){//构造方法私有化
}
public static Sun getInstance(){//阳光普照,方法公开化
return sun;
}
}
懒汉模式:
public class Sun {
private volatile static Sun sun;
private Sun(){//构造方法私有化
}
public static Sun getInstance() {//华山入口
if (sun == null) {//观日台入口
synchronized(Sun.class){//观日者进行排队
if (sun == null) {
sun = new Sun();//只有排头兵造了太阳,旭日东升
}
}
}
return sun; //……阳光普照,其余人不必再造日
}
}