A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毛羚杨 中级黑马   /  2014-2-24 10:14  /  1614 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例设计模式就是为解决可以保证一个类在内存中的对象唯一性。
咱们都知道,单例设计模式是解决这个问题的 那么我想知道的是,保证对象的唯一性是为了什么,这样做有什么好处呢?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
1.主要优点
       单例模式的主要优点如下:
       (1) 单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。
       (2) 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
       (3) 允许可变数目的实例。基于单例模式我们可以进行扩展,使用与单例控制相似的方法来获得指定个数的对象实例,既节省系统资源,又解决了单例单例对象共享过多有损性能的问题。

2.主要缺点
       单例模式的主要缺点如下:
       (1) 由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。
       (2) 单例类的职责过重,在一定程度上违背了“单一职责原则”。因为单例类既充当了工厂角色,提供了工厂方法,同时又充当了产品角色,包含一些业务方法,将产品的创建和产品的本身的功能融合到一起。
       (3) 现在很多面向对象语言(如Java、C#)的运行环境都提供了自动垃圾回收的技术,因此,如果实例化的共享对象长时间不被利用,系统会认为它是垃圾,会自动销毁并回收资源,下次利用时又将重新实例化,这将导致共享的单例对象状态的丢失。

3.适用场景
       在以下情况下可以考虑使用单例模式:
       (1) 系统只需要一个实例对象,如系统要求提供一个唯一的序列号生成器或资源管理器,或者需要考虑资源消耗太大而只允许创建一个对象。
       (2) 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
长石 发表于 2014-2-24 10:24
1.主要优点
       单例模式的主要优点如下:
       (1) 单例模式提供了对唯一实例的受控访问。因为单例类 ...

这个讲的不错 收下当笔记了,以后慢慢的研究
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马