Java模式设计之单例模式(三) - 编程入门网
e m_file = null;
/**
* 属性文件的最后修改日期
*/
private long m_lastModifiedTime = 0;
/**
* 属性文件所对应的属性对象变量
*/
private Properties m_props = null;
/**
* 本类可能存在的惟一的一个实例
*/
private static ConfigManager m_instance =
·234·Java 与模式
new 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)
{
// Get rid of the old properties
m_props.clear();
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;
}
}
}
在上面直接使用了一个局域的常量储存储属性文件的路径。在实际的系统中,读者可以采取更灵活的方式将属性文件的路径传入。 读者可以看到,这个管理器类有一个很有意思的功能,即在每一次调用时,检查属性文件是否已经被更新过。如果确实已经被更新过的话,管理器会自动重新加载属性文件,从而保证管理器的内容与属性文件的内容总是一致的。 Java模式设计之单例模式(三)(3)时间:2010-12-14怎样调用属性管理器 下面的源代码演示了怎样调用ConfigManager 来读取属性文件。 代码清单7:怎样调用ConfigManager 类以读取属性文件
上面代码运行时的情况如下图所示。 感兴趣的读者可以参考阅读本书的"专题:XMLProperties 与适配器模式"一章,那里对使用Java 属性类和XML 文件格式做了有用的讨论。 Java 语言中的单例模式 Java 语言中就有很多的单例模式的应用实例,这里讨论比较有名的几个。 Java 的Runtime 对象 在Java 语言内部,java.lang.Runtime 对象就是一个使用单例模式的例子。在每一个Java 应用程序里面,都有惟一的一个Runtime 对象。通过这个Runtime 对象,应用程 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |