请编写一个工厂方法模式的实际应用案例代码。

工厂方法模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

举个例子,假设我们正在开发一个日志记录系统,它可以将日志记录到不同的媒介,如数据库,文件,或者云等。我们可以使用工厂方法模式来创建适当的日志记录器。

以下是用Java实现的代码示例:

// 创建一个表示日志记录器的接口
public interface Logger {
    void log(String message);
}

// 创建两种类型的日志记录器
public class FileLogger implements Logger {
    public void log(String message) {
        System.out.println("Writing log message to file: " + message);
    }
}

public class CloudLogger implements Logger {
    public void log(String message) {
        System.out.println("Sending log message to cloud: " + message);
    }
}

// 创建一个抽象工厂类来获取日志记录器
public abstract class LoggerFactory {
    abstract Logger getLogger();
}

// 创建具体的工厂类来生成具体的日志记录器
public class FileLoggerFactory extends LoggerFactory {
    Logger getLogger() {
        return new FileLogger();
    }
}

public class CloudLoggerFactory extends LoggerFactory {
    Logger getLogger() {
        return new CloudLogger();
    }
}

// 在客户端
public class Client {
    public static void main(String[] args) {
        LoggerFactory loggerFactory = new FileLoggerFactory();
        Logger logger = loggerFactory.getLogger();
        logger.log("Hello, world!");
    }
}

在这个例子中,LoggerFactory就是我们的工厂,它能够生成具体的Logger。这就是工厂方法模式。当我们想要改变日志记录方式时,我们只需要改变客户端中使用的工厂即可,无需修改任何日志记录的代码。这样就达到了代码解耦的目的。

发表评论

后才能评论