所以我有
public class ApplicationConfig{
public static ApplicationConfig getCurrentInstance(){
//Something similar to this
if(instance==null){
FacesContext fc =FacesContext.getCurrentInstance();
if(fc==null)
return null;
wac = FacesContextUtils.getWebApplicationContext(fc);
}
instance =(ApplicationConfig)wac.getBean("appConfig");
}
return instance;
}
}
检索当前实例的方式与application1和application2不同。一旦我从春天读到它,一旦我使用普通的单一模式。
有办法吗?两个配置共享一些配置 - 例如
public boolean isConfiguredForFoo() {
return getCurrentInstance().getPropertyFoo().equals("foo");
}
编辑所以我最终希望能够做到以下几点,或类似的东西:
ApplicationConfig.getCurrentInstance().isApplication1();
ApplicationConfig是一个抽象或接口,application1带有getCurrentInstance和application2的实现,并带有它自己的实现。
此外:调用isConfiguredForFoo()最后调用getCurrentInstance。我无法提取此函数,因为抽象类中没有getCurrentInstance的实现,并且定义静态抽象方法是非法的。有什么方法可以将所有isXXXXConfigured()保存在一个地方并坚持DRY原则?
我对applicationSfig中的jsf和spring依赖于application1,而application2中没有依赖项。如何使用Application1的ApplicationConfig中的大多数函数,只避免访问这些依赖项的关键getCurrentInstance()函数?
答案 0 :(得分:0)
我不明白你想要存档什么?
但我怀疑两个应用程序都以相同的方式检索ApplicationConfig。
factory-method=getCurrentInstance
答案 1 :(得分:0)
我不确定您到底在做什么,但以下可能有用:
public abstract class AppConfig {
private static AppConfig instance;
static {
if (whatever...)
instance = new AppConfig1();
else
instance = new AppConfig2();
}
public static AppConfig getInstance() {
return instance();
}
}
...
if (AppConfig.getInstance() instanceof AppConfig1)
...
如果您有时在Spring中重复使用某些代码进行配置,有时在外部,可能最好为两种情况重写不同的类。