首页 > 代码库 > 单例模式
单例模式
单例模式
-
单例模式是一个比较简单的模式,其定义如下:
确保每个类只有一个实例,并且本类实例化对象提供给整个系统(Ensure a class has only one instance, and provide a global point of access to it)。
- 单例模式的通用类图如下:
- 单例模式的优点:
- 由于单例模式在内存中只有一个对象,减少了内存开销,当一个对象需要频繁的创建、销毁时,单例模式能提示实例创建时的效率,
- 单例模式减少了内存开销,当一个对象的产生需要比较多的资源时,可以考虑单例模式,创建一个单例对象常驻内存(在Java EE中采用单例模式注意垃圾回收),
- 单例模式避免对资源的多重占用,
- 单例模式可以在系统设置全局访问点,优化和共享资源访问,例如可以设计单例模式负责所有数据表的映射处理。
- 单例模式的缺点:
- 单例模式一般没有接口,扩展困难,
- 单例模式对测试是不利的,如果单例模式没有完成,是不能进行测试的,没有接口也不能使用mock的方式虚拟一个对象,
- 单例模式与单一职责原则冲突。一个类应该只实现一个逻辑,而不关心它是否是单例模式,单例模式把“单例”和业务逻辑融合在一个类中。
-
单例模式的扩展
单例模式是一个类只能产生一个对象的模式,如果一个类可以产生指定个对象,则需要对单例模式做一些变动
- 变动后的类图如下:
-
最佳实践
在Spring中,每个Bean默认就是单例的,这样做的优点就是Spring容器可以管理这些Bean的生命周期,决定什么时候创建出来,什么时候销毁等等。如果采用非单例模式(prototype类型),则Bean初始化后的管理交由J2EE容器,Spring不再跟踪管理Bean的生命周期。
单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。