欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    三种单例模式.doc

    • 资源ID:69684167       资源大小:20KB        全文页数:3页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    三种单例模式.doc

    JAVA单例模式的几种实现方法:1.饿汉式单例类 package pattern.singleton; /饿汉式单例类.在类初始化时,已经自行实例化  public class Singleton1  /私有的默认构造子 private Singleton1()      /已经自行实例化      private static final Singleton1 single = new Singleton1();     /静态工厂方法  public static Singleton1 getInstance()          return single;      2.懒汉式单例类 package pattern.singleton; /懒汉式单例类.在第一次调用的时候实例化public class Singleton2  /私有的默认构造子 private Singleton2()           /注意,这里没有final         private static Singleton2 single;      /只实例化一次static         single = new Singleton2();              /静态工厂方法  public synchronized  static Singleton2 getInstance()          if (single = null)                 single = new Singleton2();                     return single;        在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境。有些设计师在这里建议使用所谓的"双重检查成例".必须指出的是,"双重检查成例"不可以在Java 语言中使用。不十分熟悉的读者,可以看看后面给出的小节。 同样,由于构造子是私有的,因此,此类不能被继承。饿汉式单例类在自己被加载时就将自己实例化。即便加载器是静态的,在饿汉式单例类被加载时仍会将自己实例化。单从资源利用效率角度来讲,这个比懒汉式单例类稍差些。从速度和反应时间角度来讲,则比懒汉式单例类稍好些。然而,懒汉式单例类在实例化时,必须处  理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源初始化很有可能耗费时间。这意味着出现多线程同时首次引用此类的机率变得较大。    饿汉式单例类可以在Java 语言内实现, 但不易在C+ 内实现,因为静态初始化在C+ 里没有固定的顺序,因而静态的m_instance 变量的初始化与类的加载顺序没有保证,可能会出问题。这就是为什么GoF 在提出单例类的概念时,举的例子是懒汉式的。他们的书影响之大,以致Java 语言中单例类的例子也大多是懒汉式的。实际上,本书认为饿汉式单例类更符合Java 语言本身的特点。 3.登记式单例类. package pattern.singleton;  import java.util.HashMap; import java.util.Map;  /登记式单例类. /类似Spring里面的方法,将类名注册,下次从里面直接获取。  public class Singleton3  private static Map<String,Singleton3> map = new HashMap<String,Singleton3>(); static         Singleton3 single = new Singleton3();         map.put(single.getClass().getName(), single);                /保护的默认构造子     protected Singleton3()          /静态工厂方法,返还此类惟一的实例 public static Singleton3 getInstance(String name)   if(name = null)              name = Singleton3.class.getName();              System.out.println("name = null"+"->name="+name);           if(map.get(name) = null)               try                   map.put(name, (Singleton3) Class.forName(name).newInstance();               catch (InstantiationException e)                    e.printStackTrace();               catch (IllegalAccessException e)                    e.printStackTrace();               catch (ClassNotFoundException e)                   e.printStackTrace();                                return map.get(name);            /一个示意性的商业方法     public String about()              return "Hello, I am RegSingleton."                   public static void main(String args)          Singleton3 single3 = Singleton3.getInstance(null);         System.out.println(single3.about();       

    注意事项

    本文(三种单例模式.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开