设计重新加载java类的配置依赖

时间:2013-01-19 11:03:02

标签: java oop design-patterns configuration

假设这是我从DB / XML读取的配置数据对象:

class ConfigurationClass{

     //some configurations
     public String getString(){

     }
}

现在这是使用此配置对象的类

class ConfigurationUser implements Reloadable{

     private ConfigurationClass configuration;

     //some extra logic required for making object ready to use
     public void init(){
         // some new object is created based on configuration
         SomeObject obj = new SomeObject(configuration.getString());

         //register to configuration manager 
     }

     @Override
     public void reload(){
        //does whole reloading stuff
        //creates a new instance of configuration class and reads new configuration which is not appropriate
     }
}

现在,当我必须重新加载配置时,假设我创建了ConfigurationClass的新实例并将其注入ConfigurationUser类。 但是我还必须重新初始化对象,以便它可以创建新的配置依赖对象。

这是一个合适的设计还是有更好的方法?我想过将Spring或Google Juice用于DI,但我还是要为配置用户类提供回调,该配置已经重新加载。

我是使用IoC容器的新手,所以不知道是否可能。 需要在实时服务器应用程序中使用它,因此必须严格控制垃圾生产和性能。

目前的解决方案:

public interface Reloadable{

    public void reload(); 
}

我有一个配置管理器,我注册了所有配置用户实例,当要重新加载时,管理器只调用reload并读取新配置并重新初始化所有相关对象。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找Observer/Listener design pattern。您的配置用户应该是“观察者”,配置本身将是“主题”。首先,观察者将自己注册在一个主题中。接下来,每次更改主题时,它都会通知所有观察者,然后重新加载(或做任何他们想做的事情)。