面试再也不怕被问单例模式了(内涵思维导图)

设计模式(Design Pattern)

是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

在这里插入图片描述

单例模式

Myy:你好,我是专注于Java后端研发的myy。

单例:你好,我是设计模式中的单例模式,我先介绍一下自己。我非常独特,在项目中是独一无二的存在

Myy:独一无二?
单例:对呀,我在项目中从头到尾只有一个实例化对象,并且还只能由我自己创建。

Myy:只能由你自己创建?类不是有构造函数吗,我在外部new 构造函数(),不就可以创建多个对象了吗?
单例:哈哈,这个就是我的独特之处,我的构造函数是私有的,外部无法使用new来创建我,但是我对外提供了一个静态的公有函数作为全局的访问点,外部谁想使用我的对象时,只能调用那个公有函数来使用我的对象;所以说我在全局只有一个实例对象,并且这个对象是由我自己内部创建的。

Myy:这样呀,你真是一个机灵鬼,那我平常要怎么才能实现你呢?
单例:我总结了一下,别人使用最多的两种实现形式,第一种是在类加载的时候,就会创建我的实例化对象,一种方式是,类加载时不动,在第一次需要我的对象时再进行实例化。我起了一个名字,第一种叫做饿汉式,太饿了,直接就创建好了,一种是懒汉式,懒得不想创建,在第一次有人使用的时候我再创建。但这两种方式也是有缺点的。

Myy:缺点,什么缺点?
单例:懒汉式,如果在多线程并发时,就会出现线程不安全现象,为避免这种现象在每次创建实例的静态方法需要进行同步处理,使用synchronized修饰,这样每次访问都需要同步,会影响性能;饿汉式的话,不管用不用对象,在类初始化时都会创建实例,这样会消耗很多的资源,也可能会产生垃圾,但这种方式确是线程安全的。

Myy:恩恩,我今天对你认识也挺深刻的,谢谢你这么坦诚,很高兴认识你,希望以后我们可以成为好朋友。

小编最近在整理java基础,微信公众号:JAVA程序人生,会同步更新,每天一个思维导图,需要的快快抱走吧,有什么需要小编进行整理补充的可以留言哦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值