单例的优点,缺点以及应用场景
2014-07-16 16:28
309 查看
单例模式的主要优点:
单例模式提供了对唯一实例的受控访问,因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它.
由于在系统内存中之存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能,
允许可变数目的实例,基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获取指定个数的对象实例,即节省系统资源,有解决了单例对象共享过多有损性能问题.
单例模式的主要缺点:
由于单例模式没有抽象层,因此单例类的扩展有很大的困难;
单例类的职责过重,在一定程度上违背了”单一职责原则”.因为单例类即从当了工厂角色,提供了工厂方法,同时又充当了产品角色,包含一些业务方法,将产品的创建爱你和产品的本身的功能融合到一起.
现在很多面向对象语言()的运行环境都提供了自动垃圾回收技术,因此,如果实例化的共享对象长时间不被利用,兄台那个会认为是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,浙江导致共享的单例对象状态的丢失.
单例模式的使用场景:
系统只有一个实例对象,如系统要求提供一个唯一的序列号生成器或资源管理器,或者需要考虑资源消耗太大而只允许创建一个对象.
客户调用类的单个实例’只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例.
单例模式提供了对唯一实例的受控访问,因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它.
由于在系统内存中之存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能,
允许可变数目的实例,基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获取指定个数的对象实例,即节省系统资源,有解决了单例对象共享过多有损性能问题.
单例模式的主要缺点:
由于单例模式没有抽象层,因此单例类的扩展有很大的困难;
单例类的职责过重,在一定程度上违背了”单一职责原则”.因为单例类即从当了工厂角色,提供了工厂方法,同时又充当了产品角色,包含一些业务方法,将产品的创建爱你和产品的本身的功能融合到一起.
现在很多面向对象语言()的运行环境都提供了自动垃圾回收技术,因此,如果实例化的共享对象长时间不被利用,兄台那个会认为是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,浙江导致共享的单例对象状态的丢失.
单例模式的使用场景:
系统只有一个实例对象,如系统要求提供一个唯一的序列号生成器或资源管理器,或者需要考虑资源消耗太大而只允许创建一个对象.
客户调用类的单个实例’只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例.
相关文章推荐
- 初窥多线程:多线程的优点、缺点 以及 应用场合
- 单页面的应用,以及优点和缺点
- asp.net中,Session的保存机制以及哪三种方式,以及各自的用途和优点/缺点。
- 事务脚本的缺点以及领域模型的优点
- 线程高级应用-心得3-线程范围内的共享变量以及应用场景及面试题案例分析
- synchronized(object)的应用场景以及与synchronized修饰方法的区别
- 本文简述了Ajax技术适用场景、Ajax不适用场景的具体情况以及应用时候存在的一些问题。
- 分布式(集群)的基本概念以及分布式的应用场景
- C语言编写程序的优点和缺点以及与C++的区别
- android 游戏之场景的实现以及拓展应用照片浏览器
- 域还原的三种模式,以及应用场景
- JVM GC 算法以及应用场景
- boost::any的用法、优点和缺点以及源代码分析
- <转>boost::any的用法、优点和缺点以及源代码分析
- DotNET企业架构应用实践-基于接口开发介绍以及应用场景和案例
- android 游戏之场景的实现以及拓展应用照片浏览器 .
- boost::any的用法、优点和缺点以及源代码分析
- DotNET企业架构应用实践-基于接口开发介绍以及应用场景和案例
- Excel的row letter 和row number的互相转换以及结合Axspreedsheet的应用场景
- mysql索引的优点和缺点以及分类