Skip to content

简单工厂模式

意图

由一个工厂类根据参数决定创建哪一种产品实例,把「具体类型选择」从客户端收拢到一处。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);
    }
}

与工厂方法的区别

简单工厂:一个工厂类里分支创建多种产品。
工厂方法:每种产品对应子类工厂,符合开闭时扩展产品族更方便。

下一节:工厂方法模式