当前位置:七道奇文章资讯编程技术Java编程
日期:2012-04-05 13:25:00  来源:本站整理

Java学习笔记-03用私有构造器大约摆列典范强化Singleton属性[Java编程]

赞助商链接



  本文“Java学习笔记-03用私有构造器大约摆列典范强化Singleton属性[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  关于单实例情势,相信很多开辟者并不陌生,但是若何更好更安全的成立单实例对象还是需求一些推敲和考虑的,在Java中主要的成立方法有以下三种,我们辨别作出注释和得当的对比.

  1. 将构造函数私有化,直接通过静态公有的final域字段获得单实例对象:

  [java] public class Elvis {

  public static final Elvis INSTANCE = new Elvis();

  private Elivs() { ... }

  public void leaveTheBuilding() { ... }

  }

  public class Elvis {

  public static final Elvis INSTANCE = new Elvis();

  private Elivs() { ... }

  public void leaveTheBuilding() { ... }

  }这样的方法主要上风在于简便高效,利用者很快就可以断定当前类为单实例类,在调用时直接操作Elivs.INSTANCE便可,由于没有函数的调用,因此效率也非常高效.但是事物是具有一定的双面性的,这种计划方法在一个方向上走的过于极度了,因此他的缺陷也会是十清楚显的.假如此后Elvis的利用代码被迁移到多线程的利用环境下了,系统但愿可以做到每个线程利用同一个Elvis实例,差别线程之间则利用差别的对象实例.那么这种成立方法将无法实现该需求,因此需求改正接口以及接口的调用者代码,这样就带来了更高的改正本钱.

  2. 通过公有域成员的方法返回单实例对象:

  [java] public class Elvis {

  public static final Elvis INSTANCE = new Elvis();

  private Elivs() { ... }

  public static Elvis getInstance() { return INSTANCE; }

  public void leaveTheBuilding() { ... }

  }

  public class Elvis {

  public static final Elvis INSTANCE = new Elvis();

  private Elivs() { ... }

  public static Elvis getInstance() { return INSTANCE; }

  public void leaveTheBuilding() { ... }

  }

  这种办法很好的补偿了第一种方法的缺陷,假如此后需求适应多线程环境的对象成立逻辑,仅需求改正Elvis的getInstance()办法内部便可,对用调用者而言则是不变的,这样便极大的缩小了影响的范围.至于效率问题,当今的JVM针对该种函数都做了很好的内联优化,因此不会产生因函数频繁调用而带来的开销.

  3. 利用列举的方法(Java SE5):

  [java] public enum Elvis {

  INSTANCE;

  public void leaveTheBuilding() { ... }

  }

  public enum Elvis {

  INSTANCE;

  public void leaveTheBuilding() { ... }

  }就目前而言,这种办法在功效上和公有域方法相近,但是他越发简便越发清楚,扩大性更强也越发安全.

  摘自 horsttnann的专栏


  以上是“Java学习笔记-03用私有构造器大约摆列典范强化Singleton属性[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2021 www.qdodge.com. All Rights Reserved .