读书人

可更新的登记式的单实例模式

发布时间: 2012-10-26 10:30:59 作者: rapoo

可更新的注册式的单实例模式

?????? 最近,遇到这样一个应用。在系统中需要大量的配置信息,为了不每次都找数据库或者配置文件。需要一个生命周期和App一样的容器(=静态变量),但是在配置信息被修改时还需要去更新这个容器。

?

????? 首先选用的是单实例模式。单实例模式中又可分为恶汉,懒汉,以及一种基于饿汉型的注册型。

????? 个人感觉懒汉型单例模式没什么,而饿汉型的更能体现java特点。然注册行的可扩展性较强,个人感觉有点像

?????? 一个实例工厂.下面来一一列举。

?

恶汉:

?

public class ConfigImpl extends ConfigClass { private List properties = null;    /**     * @return the properties     */    public List getProperties() {        return properties;    }    private ConfigImpl() {        initalProperties();    }    public static ConfigImpl getInstance() {        return (ConfigImpl) ConfigClass.getInstance("singleConfig.ok.ConfigImpl");    }    /**     *      * @author xiaofeng.bai<BR>     * <B>Time</B> : 2008-12-11 下午01:59:24     */    public void updateProperties() {        ConfigImpl con = new ConfigImpl();        properties = con.getProperties();    }    /**     * @author xiaofeng.bai<BR>     * <B>Time</B> : 2008-12-11 下午01:56:53     */    private void initalProperties() {        // 初始化配置信息    }}

?

呵呵终于完成了,但是现在发现一个问题很晕。我在ConfigImpl中的updateProperties()中有创建了一个ConfigImpl的实例,这样能完成我对properties的更新吗?

单实例顾名思义在一个JVM中只有一个实例,这样是否可行呢?

?

?

1 楼 new20080601 2009-01-07 和java与模式 那里很像呀。。。。
只是
public void updateProperties() {
Config con = new (ConfigImpl) ConfigClass.getInstance("singleConfig.ok.ConfigImpl"); //改成这样呢? 随便说说的

properties = con.getProperties();
}

/**
* @author xiaofeng.bai<BR>
* <B>Time</B> : 2008-12-11 下午01:56:53
*/
private void initalProperties() {
// 初始化配置信息
}
这个没有,(*^__^*) 嘻嘻……,新手报道 2 楼 new20080601 2009-01-07 public void updateProperties() {

}
这个方法不要呀也可以
在测试,类里用

Config con = new (ConfigImpl) ConfigClass.getInstance("singleConfig.ok.ConfigImpl");

con .getProperties()
应该就确保一个了吧 3 楼 chian_xxp 2009-04-10 能否请楼主简要介绍下RegSingleton 类中static private的用意。实在看不明白,这样的修饰有什么特别的用意吗?

在jdk source中,也发现File.java中也出现这样的用法。
4 楼 fmjasper 2009-04-11 你确定这个程序能通过? 不会跑出access exception, 注册式的singleton, 子类的constructor必须是public

读书人网 >软件架构设计

热点推荐