Appearance
简单工厂模式
意图
由一个工厂类根据参数决定创建哪一种产品实例,把「具体类型选择」从客户端收拢到一处。GoF 未单独命名,工程中极常见。
类图
Java 示例
java
public interface Logger {
void log(String msg);
}
public class FileLogger implements Logger {
public void log(String msg) { System.out.println("[file] " + msg); }
}
public class ConsoleLogger implements Logger {
public void log(String msg) { System.out.println("[console] " + msg); }
}
public class LoggerFactory {
public static Logger create(String type) {
if ("file".equalsIgnoreCase(type)) return new FileLogger();
if ("console".equalsIgnoreCase(type)) return new ConsoleLogger();
throw new IllegalArgumentException(type);
}
}与工厂方法的区别
简单工厂:一个工厂类里分支创建多种产品。
工厂方法:每种产品对应子类工厂,符合开闭时扩展产品族更方便。
下一节:工厂方法模式