java单身模式的好处.doc

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java单身模式的好处

单例模式是一种常见的设计模式,在《Java与模式》一书中,阎宏博士对单例模式做了全面的总结。 ? Java Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数, 有利于Java垃圾回收(garbage collection)。 ? ? ?单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用: ???? 1、控制资源的使用,通过线程同步来控制资源的并发访问; ???? 2、控制实例产生的数量,达到节约资源的目的。 ?????3、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。 ? ? 单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 说明:一下的代码来自阎宏博士的《Java与模式》一书,其中对一些类的写法做调整(符合Java1.5的习惯),另外还加了测试方法。 一、懒汉式单例 在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。 /** * Created by IntelliJ IDEA. * User: leizhimin * Date: 2007-9-11 * Time: 14:57:08 * 单例模式-懒汉式单例 */ public class LazySingleton { ???? /** ????? * 私有静态对象,加载时候不做初始化 ????? */ ???? private static LazySingleton m_intance=null; ???? /** ????? * 私有构造方法,避免外部创建实例 ????? */ ???? private LazySingleton(){ ???? } ???? /** ????? * 静态工厂方法,返回此类的唯一实例.? ????? * 当发现实例没有初始化的时候,才初始化. ????? * @return LazySingleton ????? */ ???? synchronized public static LazySingleton getInstance(){ ???????? if(m_intance==null){ ???????????? m_intance=new LazySingleton(); ???????? } ???????? return m_intance; ???? } } 二、饿汉式单例 在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。 /** * Created by IntelliJ IDEA. * User: leizhimin * Date: 2007-9-11 * Time: 14:45:25 * 单例模式-饿汉式单例 */ public class EagerSingleton { ???? /** ????? * 私有的(private)唯一(static final)实例成员,在类加载的时候就创建好了单例对象 ????? */ ???? private static final EagerSingleton m_instance = new EagerSingleton(); ???? /** ????? * 私有构造方法,避免外部创建实例 ????? */ ???? private EagerSingleton() { ???? } ???? /** ????? * 静态工厂方法,返回此类的唯一实例. ????? * @return EagerSingleton ????? */ ???? public static EagerSingleton getInstance() { ???????? return m_instance; ???? } } 三、登记式单例 这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。 /** * Created by IntelliJ IDEA. * User: leizhimin * Date: 2005-9-11 * Time: 15:20:16 * 单例模式- 登记式单例 */ public class RegSingleton { ???? /** ????? * 登记薄,用来存放所有登记的实例 ????? */ ???? priva

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档