早上好,父类是否应引用子类?
我在工作中继承了一些遗留代码,它使用了一种非常不寻常的设计模式。我可以在论坛上找到类似模式的唯一参考文献是here。情况是,原始设计者有一个通用的父类(不是抽象的),它具有直接引用子类的静态工厂方法。
这里是编码的这种风格的样本,在原有代码的几个地方发现:
public static LoggerFactory getLoggerFactory(LogType type) {
switch (type) {
case LOG4J:
return Log4JLoggerFactory.getInstance();
case LOGBACK:
return LogBackLoggerFactory.getInstance();
default:
throw new RuntimeException("No logger factory defined for type " + type);
}
}
凡Log4JLoggerFactory和LogBackLoggerFactory延伸的LoggerFactory。
这对我来说似乎很陌生,但在我重新将代码重新分解之前,这种设计模式有没有任何目的或好处(是否还有一个正式的名称)?
任何想法或建议表示赞赏。谢谢!
编辑:在阅读Yishai的回应后,我想我会包含一个链接到Wikipedia article on the Strategy pattern,以方便参考。感谢大家的回应!