单例模式的说明以及各个不同的单例模式的演示

单例模式:

一个类模板,在整个系统运行过程中,只允许产生一个实例(有且只有一个对象)new
例如:工厂模式中的配置文件,日历…。

实现单例模式的技术方案:

饿汉式、懒汉式、注册登记式、枚举式、序列化与反序列化方式

饿汉式:

在使用实例之前,不管你用不用,我都先new出来,避免了线程安全问题。

代码演示

在这里插入图片描述

懒汉式:

在使用实例之前不创建,当你使用时才创建,线程不安全。

代码演示
懒汉一:

在这里插入图片描述

懒汉二:

在这里插入图片描述

懒汉三:

在这里插入图片描述

注册登记式:

每使用一次,都往一个固定的容器中去注册并且将使用过的对象进行缓存,下次去取对象的时候,就直接从缓存中取值,已保证每次获取的都是同一个对象。分为容器式和枚举式

代码演示
容器式:

在这里插入图片描述

枚举式:

在这里插入图片描述

序列化与反序列化保证单例:

重写序列readResolve()方法。
该方法在系统运行中,由JVM自动调用。

代码演示

在这里插入图片描述

单例模式主要的问题:

单例模式在并发的情况下,线程会出现安全问题、生成几个不同的对象,序列化与反序列化的时候会出现多例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值