单例设计模式
核心思想:在程序运行的过程当中,该类的对象保持有且只有一个的状态
单例分两种:懒汉式和饿汉式
单例需要满足的条件
1.不让外界创建这个对象即(构造方法需要私有化)
2.在类的内部来创建这个对象即(让这个对象只创建一次)
3.需要给外部提供一个访问可以获得该对象的方法即(提供一个get方法)
懒汉式代码:
/懒汉式(不完整 线程安全问题 双锁控制) 在类被加载的时候 不会去创建对象 只有当你
//调用了获取该类的方法时 才会创建该类对象
class SingleL{
//声明一个对象的引用
private static SingleL singleL=null;
//构造方法私有化
private SingleL() {
}
//获取对象的方法
public static SingleL getInstance() {
//判断 当这个对象不存在的时候在创建
if(singleL==null) {
singleL=new SingleL();
}
return singleL;
}
饿汉式代码:
//饿汉式(只要该类 被加载 就会在方法区的 静态区中 创建本类对象)
class SingleE{
//声明一个本类的对象
private static SingleE singleE=new SingleE();
//构造方法私有化
private SingleE() {
}
//对外提供一个访问的方法
public static SingleE getInstance() {
return singleE;
}
}
实现的结果:打印了两次,为了测试单例是否只能被创建一个对象
//打印获取单例对象 两者打印的内容是一样的,说明两个是同一个对象
System.out.println(SingleE.getInstance());
System.out.println(SingleE.getInstance());
System.out.println("-------------------");
//打印懒汉模式对象
System.out.println(SingleL.getInstance());
System.out.println(SingleL.getInstance());
![](https://i-blog.csdnimg.cn/blog_migrate/f4c4b44631e3ea0a13e0dcba5bb1364d.png)