定义

在抽象工厂中声明了工厂方法,具体产品对象的创建由其子类(具体工厂)负责,客户端针对抽象工厂编程,可在运行时再指定具体工厂类。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式是一种类创建型模式。


UML图例

工厂方法模式


代码示例

// 日志记录器接口:抽象产品
public interface Logger {
    public void writeLog();
}

// 数据库日志记录器:具体产品1
public class DatabaseLogger implements Logger{

    public void writeLog() {
        System.out.println("数据库日志记录。");

    }
}


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

// 日志记录器工厂接口:抽象工厂
interface  LoggerFactory {
    public Logger createLogger();
}

// 数据库日志记录器工厂类:具体工厂1
public class DatabaseLoggerFactory implements LoggerFactory{
    @Override
    public Logger createLogger() {
        // 连接数据库,代码省略

        // 创建数据库日志记录器对象
        Logger logger = new DatabaseLogger();

        // 初始化数据库日志记录器,代码省略

        return logger;
    }
}


// 文件日志记录器工厂类:具体工厂2
public class FileLoggerFactory implements LoggerFactory {
    public Logger createLogger() {
        // 创建文件日志记录器对象
        Logger  logger = new FileLogger();

        // 创建文件,代码省略

        return logger;
    }
}

public class Client {
    public static void main(String[] args) {
        LoggerFactory factory;
        Logger logger;
        factory = new FileLoggerFactory();
        logger = factory.createLogger();
        logger.writeLog();
    }
}

与简单工厂模式相比,工厂方法模式最重要的区别是引入了抽象工厂角色,抽象工厂角色可以是接口,也可以是抽象类或者具体类(少见)。

快速入口:

最后修改:2020 年 05 月 21 日
如果觉得我的文章对你有用,请随意赞赏