The fifth pattern------Singleton Pattern

本文介绍了单件模式的基本概念和三种实现方式,包括使用Synchronized关键字、急切实例化及双重锁加锁的方法,并讨论了各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 没有引入新的OO原则

OO模式:

单件模式:确保一个类只有一个示例,并提供全局访问点。

 

我的理解:

这个模式相对比较简单,主要的实现方式就是把构造器设置为私有的,然后再利用一个静态的getInstance方法来产生实例。

简单的实现单件模式的代码:

 

单件模式相比于前面几个所学的模式的话都要简单,但是这里也会出现有一个问题,就是多线程的问题,当碰到多线程时上面的代码就有可能产生两个instance。

对应于解决多线程产生的问题也会有三种方法:

1) 在getInstance方法前面加上Synchronized限定词:

该方法的缺点就是用上线程同步后,会使整个程序的效率下降N多,而且其实我们需要同步的仅仅只是new这个操作。

2) 急切实例化,即在声明时就把类实例化掉,那么接下来就不会产生出现多个实例的情况了

该方法的缺点就是跟使用静态变量差不多,比较占用系统资源,因为你在没有使用之时就已经把对象创建好了,可能在该程序中一直要到最后才会用到这个对象,但是你一开始就创建了,就会占用不必要的资源了。

3) 双重锁加锁

这个的缺点的话就是在java5以前volatile这个关键词会导致双重锁检查的失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值