常用设计模式——工厂方法模式
程序员文章站
2024-01-06 09:49:58
...
个人整合学习自
- 《Java设计模式》 刘伟 编著
工厂方法模式
工厂方法模式是简单工厂模式的延续,它集成了简单工厂模式的优点,同时还弥补了简单工厂模式的不足。工厂方法模式是使用频率最高的设计模式之一。是很多开源框架和API类库的核心模式。如常见的日志记录工具SLF4J。
实现
其实就是把工厂实现类分开,分为一个接口和一个实现类。更加满足开闭原则。
如下实例代码
- Logger: 日志记录器接口,充当抽象产品角色。
public interface Logger {
public void write();
}
- DatabaseLogger: 数据库日志记录器,充当具体产品角色。
public class DatabaseLogger implements Logger {
@Override
public void write() {
System.out.println("打印数据库日志记录");
}
}
- FileLogger: 文件日志记录器,充当具体产品角色。
public class FileLogger implements Logger {
@Override
public void write() {
System.out.println("打印文件日志记录");
}
}
- LoggerFactory: 日志记录器工厂接口,充当抽象工厂角色。
public interface LoggerFactory {
public Logger createLogger(); // 抽象工厂方法
}
- DatabaseLoggerFactory: 数据库日志记录器工程类,充当具体工厂角色
public class DatabaseLoggerFactory implements LoggerFactory {
@Override
public Logger createLogger() {
Logger logger = new DatabaseLogger();
return logger;
}
}
- FileLoggerFactory: 文件日志记录器工程类,充当具体工厂角色
public class FileLoggerFactory implements LoggerFactory {
@Override
public Logger createLogger() {
Logger logger = new FileLogger();
return logger;
}
}
- Client: 客户端测试类
public void Client {
public static void main(String[] args) {
// 创建一个文件工厂
Factory factory = new FileLoggerFactory();
// 使用工厂获取文件打印产品角色
Logger logger = factory.createLogger();
// 打印文件日志
logger.write();
}
}