【发布时间】:2010-11-29 14:23:14
【问题描述】:
早上好,
我在工作中继承了一些遗留代码,它使用了一种相当不寻常的设计模式。我在论坛上能找到的唯一一个类似模式的参考是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 的链接,以方便参考。感谢大家的回复!
【问题讨论】:
标签: java design-patterns inheritance