23种设计模式之单例模式
单例模式的定义定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的通用类图如下: ![]() 单例模式的优缺点单例模式的优点:
单例模式的缺点:
单例模式的注意事项1.高并发情况下,注意线程同步问题 这是一个线程不安全的单例 ![]() 该单例模式在低并发的情况下可能不会出现问题,若并发量增加就可能在内存中出现多个实例,破坏了最初的预期. 解决线程不安全的方法有很多,可以在 getInstance 方法前加 synchronized 关键字,也可以在方法内增加 synchronized实现,这种被称为懒汉式单例,还有一种饿汉式单例,代码如下: ![]() 2.对象被复制的情况 在Java中,对象默认是不可以被复制的,若实现了Cloneable接口,并实现了clone方法,则可以直接通过对象复制方式创建一个新对象,对象复制是不用调用类的构造函数的,因此即使是私有的构造函数,对象仍然可以被复制. 一般情况下,类复制的情况是不用考虑的,很少会出现一个单例类会主动要求被复制的情况,解决该问题的最好方法就是单例类不要实现Cloneable接口 单例模式是23个模式中比较简单的模式,应用也很广泛,如在Spring中,每个Bean默认就是单例的,这样做的优点是Spring容器可以管理这些Bean的生命期,决定什么时候创建出来,什么时候销毁,销毁的时候要如何处理,等等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 红宝石 – 如何将科学符号字符串转换为十进制符号?
- PostgreSQL 性能优化与维护
- 哪里有最好的SQLite 3教程iPhone-SDK?
- entity-framework – 将带有子项的Entity Framework对象序列
- ruby-on-rails – Rails应用程序连接池大小,避免最大池大小
- c# – 如何使用ASP.NET MVC中的Entity Framework将记录插入
- xcode-select –install xcode-select:错误:未知命令选项
- 微信公众平台开发之发送图文消息.Net代码解析
- 实现百度文库+FlexPaper实现文档在线浏览(附源码)
- xml与java双向映射