Java单例模式基础总结与示例

什么是单例模式?

单例类确保只有一个实例,也就是我们不能像往常使用类一样创建多个实列

单例类自动创建属于自己的唯一实例

单例类需要给其他对象调用自身实例的方法

单例类与普通类的区别:单例类只有一个实例,只创建一次一直储存在内存上没有被销毁,每次使用单例类用的都是同一个实例。普通类在每次要使用时创建在不适用时自动销毁。单例类只有一个

实例他无法被多个对象同时访问,而普通类可以创建多个实例可以多个对象访问不同的实例。

如何创建单例类?(以饿汉式为例)

在这里插入图片描述

上图单例类,将类的实例存储在一个静态字段里面,并且私有化构造函数使其无法被在其他位置被实例,通过静态的特点只在类加载时加载(只加载一次),在加载类时就完成了对自身的实例并且存储在字段中,并且给了一个方法返回该字段(实例),并且该方法为静态使其无需实例就可调用。

访问顺序:外部调用获取实例的静态方法,返回实例,在调用实例。(返回的实例永远是同一个)

单例类的使用示例

假如我要记录一个网站的访问量,我先示范单例如何实现。

在上面的示例单例类中我写了一个计算值和一个计数方法。

只要客户每次浏览我就执行CingletonPattern.getInstance().autoIncrement();

完成计数。

而普通类方法需要每次都要实例类(传递计数值)在调用类进行计算在储存计数值。

在这里插入图片描述

同时会出现一个问题,假如有5个人同时访问每一个人都传递一个计数值实例了类进行计算加1,由于同时执行,大家传递的计数值都相同,也就是说在同一时间无论你多少人在访问,都只是记录一个人,其他人记录不了。而单例模式完美的解决了这个问题,他只有一个实例无法被同时访问调用,即使同一时间多个请求调用,他们会自动进行排队,一个一个执行,完整的记录每一个人。

总结

单例类的实例一直存储在内存中,普通类则是用则实例不用则自动销毁。

频繁的创建实例销毁实例大大影响系统运行速度。

所以在遇到一些频繁调用的类可以考虑使用单例加强性能。

计数方面尽量使用单例。同理在文件操作方面也尽量使用单例。

Window系统是多线程的,如果多个线程同时操作同一文件会出现操作重复等一系列问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值