当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Java情势筹划之单例情势(四)[Java编程]

赞助商链接



  本文“Java情势筹划之单例情势(四)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

不完好的单例类

什么是不完好的单例类

预计有些读者见过下面这样的“不完好”的单例类.

代码清单10:“不完好”单例类

package com.javapatterns.singleton.demos;
public class LazySingleton
{
private static LazySingleton
m_instance = null;
/**
* 公开的构造子,外界可以直接实例化
*/
public LazySingleton() { }
/**
* 静态工厂办法
* @return 返还LazySingleton 类的惟一实例
*/
synchronized public static
LazySingleton getInstance()
{
if (m_instance == null)
{
m_instance = new LazySingleton();
}
return m_instance;
}
}

上面的代码乍看起来是一个“懒汉”式单例类,细心一看,发现有一个公开的构造子.由于外界可以利用构造子成立出肆意多个此类的实例,这违反了单例类只能有一个(或有限个)实例的特点,因此这个类不是完好的单例类.这种情形有时会呈现,比方javax.swing.TimerQueue 就是一例,关于这个类,请拜见《Java与情势》一书中的“察看者情势与Swing 按时器” 一章.

造成这种情形呈现的缘由有以下几种大概:

(1) 初学者的错误.很多初学者没有熟习到单例类的构造子不能是公开的,因此犯下这个错误.有些初学Java 语言的学员乃至不知道一个Java 类的构造子可以不是公开的.在 这种情形下,计划师大概会通过自我约束,也就是说不去调用构造子的办法,将这个不完好的单例类在利用中作为一个单例类利用.

在这种情形下,一个简单的改正办法,就是将公开的构造子改成私有的构造子.

(2) 当初出于考虑不周,将一个类计划成为单例类,后来发现此类该当有多于一个的实例.为了补偿错误, 干脆将构造子改成公开的,以便在需求多于一个的实例时, 可以随时调用构造子成立新的实例.要改正这种情形较为艰难,必须按照具体情形做出改良的决意.假如一个类在最初被计划成为单例类,但后来发现实际上此类该当有有限多个实例,这时刻该当考虑能否将单例类改成多例类(Multiton).

(3)计划师的Java 知识很好,并且也知道单例情势的精确利用办法,但是还是有意利用这种不完好的单例情势,因为他意在利用一种“改良”的单例情势.这时刻, 除去共有的构造子不符合单例情势的要求之外,这个类必须是很好的单例情势.


  以上是“Java情势筹划之单例情势(四)[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-2022 www.xiamiku.com. All Rights Reserved .