单例模式是一种常用的软件设计模式,在它的核心结构中只包含一个被称为单例的特殊类,通过单例模式可以保证系统中一个类只有一个实例。
单例模式的具体实现有以下三点:
1.私有的构造器
2.私有的静态的引用
3.公开的静态的访问方式
单例模式分为懒汉式和饿汉式两种
懒汉式:当第一次调用的时候创建对象
class Ton{
//私有的静态的引用
private static Ton ton;
//私有的构造方法
private Ton() {}
//公开的静态的访问方式
public static Ton newTon() {
if(ton==null) {
ton=new Ton();
}
return ton;
}
}
饿汉式:在类加载的时候创建对象
class Single{
//私有的静态的引用,已经创建好对象
private static Single single=new Single();
//私有的构造器
private Single() {}
//公开的静态的访问方式
public static Single newSingle() {
return single;
}
}
上面的两种设计模式,我们可以测试一下创建的对象是不是同一个
public class SingleTon {
public static void main(String[] args) {
//懒汉式:调用公开的静态的方法,返回对象分别给ton1和ton2,然后比较两个地址值是否一致
Ton ton1=Ton.newTon();
Ton ton2=Ton.newTon();
System.out.println(ton1==ton2);
//饿汉式:调用公开的静态的方法,返回对象分别给ton1和ton2,然后比较两个地址值是否一致
Single single1=Single.newSingle();
Single single2=Single.newSingle();
System.out.println(single1==single2);
}
}
运行结果:
可见地址是相同的,说明对象是同一个对象