快速业务通道

Java语言单态创立性模式介绍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

一个实用的例子

这里作者给出一个读取属性(properties)文件的单态类,作为单态类的一个实用的例子。属性文件如同老式的视窗编程时的.ini文件,属于系统的“资源“,而读取属性文件即为资源管理, 显然应当由一个单态类负责。

Java语言单态创立性模式介绍 - 编程入门网

图7. 这个例子的UML

Java语言单态创立性模式介绍(6)

时间:2010-12-17

显然,在大多数的系统中都会涉及属性文件的读取问题,因而这个例子非常有实用价值。在这个例子里,作者假定需要读取的属性文件就在当前目录中,且名为singleton.properties。在这个文件中有如下的一些属性项:

node1.item1=How node1.item2=are node2.item1=you node2.item2=doing node3.item1=?

代码清单7. 属性文件内容

本例子的源代码如下:

package com.javapatterns.singleton.demos; import java.util.Properties; import java.io.FileInputStream; import java.io.File; public class ConfigManager {   /**   * 私有的构造子, 用以保证实例化的唯一性   */   private ConfigManager()   {    m_file = new File(PFILE);    m_lastModifiedTime = m_file.lastModified();    if(m_lastModifiedTime == 0)    {     System.err.println(PFILE + " file does not exist!");    }    m_props = new Properties();    try    {     m_props.load(new FileInputStream(PFILE));    }    catch(Exception e)    {     e.printStackTrace();    }   }   /**   *   * @return 返还ConfigManager类的单一实例   */   synchronized public static ConfigManager getInstance()   {    return m_instance;   }   /**   * 读取一特定的属性项   *   * @param name 属性项的项名   * @param defaultVal 属性项的缺省值   * @return 属性项的值(如此项存在), 缺省值(如此项不存在)   */   final public Object getConfigItem(String name, Object defaultVal)   {    long newTime = m_file.lastModified();    // 检查属性文件是否被其它程序(多数情况是程序员手动)修改过。    // 如果是,重新读取此文件。    if(newTime == 0)    {     // 属性文件不存在     if(m_lastModifiedTime == 0)     {      System.err.println(PFILE + " file does not exist!");     }     else     {      System.err.println(PFILE + " file was deleted!!");     }     return defaultVal;    }    else if(newTime > m_lastModifiedTime)    {     m_props.clear(); // Get rid of the old properties     try     {      m_props.load(new FileInputStream(PFILE));     }     catch(Exception e)     {      e.printStackTrace();     }    }    m_lastModifiedTime = newTime;    Object val = m_props.getProperty(name);    if( val == null )    {     return defaultVal;    }    else    {     return val;    }   }   /**   * 属性文件全名   */   private static final String PFILE = System.getProperty("user.dir")                     + "/Singleton.properties";   /**   * 对应于属性文件的文件对象变量   */   private File m_file = null;   /**   * 属性文件的最后修改日期   */   private long m_lastModifiedTime = 0;   /**   * 属性文件所对应的属性对象变量   */   private Properties m_props = null;   /**   * 本类可能存在

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号