单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。
单例模式分为饿汉模式和懒汉模式两种!
饿汉模式:
public class DanLiDemo {
//饿汉模式(立即加载)
//私有的构造,避免被外部实例化
private DanLiDemo(){}
private static DanLiDemo danLiDemo = new DanLiDemo();
//静态的工厂方法,调用此方法对象就可以被实例化
public static DanLiDemo getInstance(){
return danLiDemo;
}
}
懒汉模式:
public class DanLiDemo2 {
//懒汉模式(延迟加载)
private DanLiDemo2 (){}
private static DanLiDemo2 danLiDemo2 = null;
//静态工厂方法
public static DanLiDemo2 getInstance(){
//调用方法之前会先判断对象是否被实例化
if(danLiDemo2==null){
danLiDemo2 = new DanLiDemo2();
}
return danLiDemo2;
}
运行后结果:
我们发现实例化了同一个对象后,它们的内存地址都是一样,所以我们的单例模式就起到了一个类 ,只有一个实例化