从面试的角度看单例模式

去年底我写了单例模式的博客

请见https://blog.csdn.net/qq_39767955/article/details/84310120

我就以为我对单例模式的理解已经差不多了,却没有想到在几个月的时间里面,又对Java(编程)有了新的思考。

回到主题,设计模式几乎是Java面试官必问的问题之一,而且单例模式又是被回答的最多的模式,一方面是单例模式相对简单,方便手写,另一方面当你回到出单例模式时,就可能跳进了面试官为你精心准备的“圈套”里面。

当然,一般情况下,中小公司对面试着设计模式的要求不多,面试着能随便说出几个,这些模式的作用,写法后,基本就过了。但如果要面大公司,我们还需要下苦功夫啊。现在说说面试官的圈套吧,他可能会让你写一个你觉得最好的单例模式,然后问你为什么要这样写,这样写的好处和它能解决的问题。在这里我写一个比较不错 的 双检锁的单例模式吧。

简单说一下吧,这里面有三个点,volatite;synchronized和.class。其他的在我在第二行的博客里面已经提到过了。想想为什么要这样写。简单的懒汉单例模式在多线程下可能会有线程安全问题,那么会问怎么保证线程安全。从上面提到的三个点,可以问道JMM(Java内存模型),锁,类的实例化和加载过程,等等等等,所以越基础的东西越复杂。如果想具体了解,可以参看这篇博客(如果连最基本的单例模式都不会的,先看第二行的博客)https://www.cnblogs.com/dongyu666/p/6971783.html

我们不禁会问,这里单利模式是怎么来的,有些是教科书上写的,是Java语言专家对Java语言特性的总结,有些呢则是工业界血一般的教训换来的。怎么理解呢,举个例子,当请求增多时,多线程下一些单例模式是不安全 的,就可能出现很多问题。

业务才是检验代码健壮性和安全性的唯一标准,各位加油,共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值