课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
单例模式是程序员在学习计算机编程开发语言的时候需要重点掌握的一个编程知识点,下面我们就通过案例分析来了解一下,java编程单例模式优缺点与应用分析。
单例模式:是一种创建型设计模式,目的是保证全局一个类只有一个实例对象,分为懒汉式和饿汉式。所谓懒汉式,类似于懒加载,需要的时候才会触发初始化实例对象。而饿汉式正好相反,项目启动,类加载的时候,就会创建初始化单例对象。
优点
如果只有一个实例,那么就可以少占用系统资源,节省内存,访问也会相对较快。比较灵活。
缺点
不能使用在变化的对象上,特别是不同请求会造成不同属性的对象。由于Spring本身默认实例就是单例的,所以使用的时候需要判断应用场景,要不会造成张冠李戴的现象。而往往操作引用和集合,就更不容易查找到这种诡异的问题。例如:一些配置获取,如果后期使用需要修改其值,要么定义使用单例,后期使用深拷贝,要么不要使用单例。
既然使用单例模式,那么就得想尽一切办法,保证实例是的,这也是单例模式的使命。但是代码是人写的,再完美的人也可能写出不那么完美的代码,再安全的系统,也有可能存在漏洞。既然你想保证单例,那我偏偏找出方法,创建同一个类多个不同的对象呢?这就是对单例模式的破坏,到底有哪些方式可以破坏单例模式呢?主要但是不限于以下几种:
通过构造器创建对象
一般来说,一个稍微✔️的单例模式,是不可以通过new来创建对象的,这个严格意义上不属于单例模式的破坏。但是人不是完美的,写出的程序也不可能是完美的,总会有时候疏忽了,忘记了将构造器私有化,那么外部就可以直接调用到构造器,自然就可以破坏单例模式,所以这种写法就是不成功的单例模式。
实现了cloneable接口
如果单例对象已经将构造方法声明成为private,并且重写了构造方法,那么暂时无法调用到构造方法。但是还有一种情况,那就是拷贝,拷贝的时候是不需要经过构造方法的。但是要想拷贝,必须实现Clonable方法,而且需要重写clone方法。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。