java-什么时候以及为什么Child类声明父类的静态实例成员?
作者:互联网
这是一些遗留代码中的另一种设计模式,我在google上找不到很多.在这种情况下,子类扩展了其抽象父级,但随后转过来并声明了父级的静态实例:
public abstract class MessageBase {
protected DAOFactory factory;
// method declarations
}
public class EDWMessage extends MessageBase {
private static MessageBase instance;
public static MessageBase getInstance(Properties properties) {
if (instance == null) {
instance = new EDWMessageTransaction(properties, null);
}
return instance;
}
//more code
}
我不确定我是否会理解这种设计模式(如果它是已知模式).这是一种便捷模式,可以避免将父级的每个成员变量声明为静态吗?还是意味着允许多个子类每个都有一个父实例.但是,如果是这样的话,为什么仅仅在简单的构成上过多地使用继承呢?
其余的代码没有说明为什么要用这种方法.任何想法或想法将不胜感激.谢谢!
附言在这个我不知道如何处理的旧代码中,我似乎遇到了很多有趣的design patterns.感谢所有已经帮助我的人.
编辑:扩展代码示例.当我发现实际使用此代码的某个地方时,将再次进行编辑.是的,没有文档.
解决方法:
这是线程安全的懒惰单例初始化的常见用法.如果可以有一个单例类,则可以委派给一个私有的静态实例化类.
public class MySingleton{
private MySingleton(){
}
public static MySingleton getInstance(){
return SingletonCreator.INSTANCE;
}
private static class SingletonCreator{
private static final MySingleton INSTNACE = new MySingleton();
}
}
不知道这是否是您的子类的使用方式,但是这对于持有父类静态实例的子类来说将是一个用例
标签:legacy-code,java,design-patterns,refactoring 来源: https://codeday.me/bug/20191208/2094946.html