小白之简略单列模式

单例模式:只有一个实例所有不能new对象所以构造方法时私有的,
私有的构造方法只能在本类中获取对象或者把他写成静态的然后类.对象来获取,
要保证是单例的话就是不能让他new对象所以,定义一个静态返回本类中唯一的实例对象.因为只要new一个对象就在堆内存里面开辟一块新的空间来放new出来的对象。可以避免资源的浪费和内存的消耗。

饿汉式设计模式

为什么叫饿汉因为在加载类的时候时候先给他赋值
先创建一个Student实体类
static在class类里面是最先执行的代码块然后在读字节码的时候先在堆内存开辟一块内存
因为是private的构造方法不用反射的情况下能在他的本类里面写一个方法然后来获取创建的学生对象
在这里插入图片描述
创建完实体类然后创建测试类在main方法获取刚才创建的对象来测试经过多次的创建后创建出来的对象是否是一个(通过构造方法里面的输出哈哈来测试创建了几次对象)

在这里插入图片描述
通过输出的结果看只创建了一次对象所有这是一个单例的类
在多线程的情况下来测试一下安全还是不安全
来写一个for循环实现 开启线程然后在重写 Runnable接口中的方法

  • 测试一

在这里插入图片描述

  • 测试二

在这里插入图片描述

在这里插入图片描述

  • 测试三

在这里插入图片描述
经过多次测试可以发现饿汉式设计模式在多线程的情况下是安全的

***懒汉式设计模式

就是在加载类的时候创建一个对象先不给他赋值

先创建一个实体类
在这里插入图片描述

在这里插入图片描述
然后创建测试来用多线程来测试

  • 测试一


  • 这次创建了七次对象所以不是单例


测试二
在这里插入图片描述
这次创建了七次对象是实例的


  • 测试三

在这里插入图片描述
这次创建了四次对象,是实例的

这个不是不全是单例的因为产生了高并发所以要给创建他们的方法里面加一个双重判定锁

在这里插入图片描述
在他的方法里面加一个双重判定锁
在测试


  • 测试一

在这里插入图片描述
单例的


  • 测试二

在这里插入图片描述
也是单例的;


  • 测试三

在这里插入图片描述
单例的;
对他进行了优化

懒汉设计模式:
优点是:性能比较快。缺点:不安全,在多线程中很容易高并发所以要加上双重判断对他进行优化
饿汉设计模式:
优点是:在多线程中相对安全,缺点:性能比较慢;

反射获取

反射可以获取:先获取该类的大Class对象然后在通过大Class对象来获取他的构造方法
在这里插入图片描述
在这里插入图片描述
通过反射获取的还是多例的还是通过构造方法调用newInstance();方法来获取的所以不可用

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值