软件工厂方法模式

工厂方法模式

意图:定义一个用于创建对象的接口,但让子类决定将哪一个类实例化。

例子:一个日志记录器工厂,可以创建文件日志记录器或数据库日志记录器。

以下是一个工厂方法模式的 Java 实现示例,模拟日志记录器的创建场景(支持文件日志和数据库日志):

java 复制代码
// 1. 定义日志记录器接口(抽象产品)
interface Logger {
    void log(String message);
}

// 2. 实现具体的日志记录器(具体产品)
class FileLogger implements Logger {
    @Override
    public void log(String message) {
        System.out.println("文件日志记录: " + message);
    }
}

class DatabaseLogger implements Logger {
    @Override
    public void log(String message) {
        System.out.println("数据库日志记录: " + message);
    }
}

// 3. 定义日志记录器工厂接口(抽象工厂)
interface LoggerFactory {
    Logger createLogger();
}

// 4. 实现具体的工厂类(具体工厂)
class FileLoggerFactory implements LoggerFactory {
    @Override
    public Logger createLogger() {
        return new FileLogger();
    }
}

class DatabaseLoggerFactory implements LoggerFactory {
    @Override
    public Logger createLogger() {
        return new DatabaseLogger();
    }
}

// 5. 客户端代码
public class FactoryMethodDemo {
    public static void main(String[] args) {
        // 使用文件日志工厂
        LoggerFactory fileLoggerFactory = new FileLoggerFactory();
        Logger fileLogger = fileLoggerFactory.createLogger();
        fileLogger.log("这是一条文件日志");

        // 使用数据库日志工厂
        LoggerFactory dbLoggerFactory = new DatabaseLoggerFactory();
        Logger dbLogger = dbLoggerFactory.createLogger();
        dbLogger.log("这是一条数据库日志");
    }
}
相关推荐
快乐非自愿2 天前
常用设计模式:工厂方法模式
javascript·设计模式·工厂方法模式
乐悠小码11 天前
Java设计模式精讲---01工厂方法模式
java·设计模式·工厂方法模式
橙色云-智橙协同研发22 天前
PLM实施专家宝典:离散制造企业研发数据“数字基因”构建方案
经验分享·工厂方法模式·解决方案·数字化转型·plm·国产plm·plm方案
WaWaJie_Ngen25 天前
【设计模式】工厂模式(Factory)
c++·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式
杯莫停丶1 个月前
设计模式之:工厂方法模式
设计模式·工厂方法模式
苍老流年2 个月前
1. 设计模式--工厂方法模式
设计模式·工厂方法模式
charlie1145141912 个月前
精读《C++20设计模式》:创造性模式——工厂方法和抽象工厂模式
学习·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式·c++20·嵌套工厂模式
new_daimond2 个月前
设计模式详解:单例模式、工厂方法模式、抽象工厂模式
单例模式·设计模式·工厂方法模式
bkspiderx2 个月前
C++设计模式之创建型模式:工厂方法模式(Factory Method)
c++·设计模式·工厂方法模式