欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

常用设计模式——工厂方法模式

程序员文章站 2024-01-06 09:49:58
...

个人整合学习自

  1. 《Java设计模式》 刘伟 编著

工厂方法模式

  工厂方法模式是简单工厂模式的延续,它集成了简单工厂模式的优点,同时还弥补了简单工厂模式的不足。工厂方法模式是使用频率最高的设计模式之一。是很多开源框架和API类库的核心模式。如常见的日志记录工具SLF4J。


实现

  其实就是把工厂实现类分开,分为一个接口和一个实现类。更加满足开闭原则。
如下实例代码

  1. Logger: 日志记录器接口,充当抽象产品角色。
public interface Logger {
	public void write();
}
  1. DatabaseLogger: 数据库日志记录器,充当具体产品角色。
public class DatabaseLogger implements Logger {
	@Override 
	public void write() {
		System.out.println("打印数据库日志记录");
	}
}
  1. FileLogger: 文件日志记录器,充当具体产品角色。
public class FileLogger implements Logger {
	@Override 
	public void write() {
		System.out.println("打印文件日志记录");
	}
}
  1. LoggerFactory: 日志记录器工厂接口,充当抽象工厂角色。
public interface LoggerFactory {
	public Logger createLogger();  // 抽象工厂方法
}
  1. DatabaseLoggerFactory: 数据库日志记录器工程类,充当具体工厂角色
public class DatabaseLoggerFactory implements LoggerFactory {
	@Override
	public Logger createLogger() {
		Logger logger = new DatabaseLogger();
		return logger;
	}
}
  1. FileLoggerFactory: 文件日志记录器工程类,充当具体工厂角色
public class FileLoggerFactory implements LoggerFactory {
	@Override
	public Logger createLogger() {
		Logger logger = new FileLogger();
		return logger;
	}
}
  1. Client: 客户端测试类
public void Client {
	public static void main(String[] args) {
		// 创建一个文件工厂
		Factory factory = new FileLoggerFactory();
		// 使用工厂获取文件打印产品角色
		Logger logger = factory.createLogger();
		// 打印文件日志
		logger.write();
	}
}

上一篇:

下一篇: