设计模式(二):工厂方法模式

    工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但将实际创建对象的过程推迟到子类中。这使得客户端代码在不必指定所创建对象的具体类的情况下,就能够创建对象。


    工厂方法模式适用于需要创建一组相关对象的场景,这些对象具有共同的接口或基类,但其具体实现可能不同。
 

UML

如下图,以UML展示了工厂方法模式中各个角色之间的关系

示例

 以下是一个简单的工厂方法模式示例,假设我们要创建不同类型的日志记录器:  
 在这个示例中,Logger 是抽象产品,FileLogger 和 DatabaseLogger 是具体产品。  LoggerFactory 是抽象工厂,FileLoggerFactory 和 DatabaseLoggerFactory 是具体工厂。
// 抽象产品:日志记录器 
interface Logger {     
void log(String message); 
}  

// 具体产品:文件日志记录器 
class FileLogger implements Logger {     
@Override     
        public void log(String message) {         
            System.out.println("Logging message to file: " + message);     
        } }  
        
// 具体产品:数据库日志记录器 
class DatabaseLogger implements Logger {     
@Override     
public void log(String message) {         
System.out.println("Logging message to database: " + message);     
} }  

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

// 具体工厂:文件日志记录器工厂 
class FileLoggerFactory implements LoggerFactory {     
@Override     
public Logger createLogger() {         
return new FileLogger();     
} } 
 
// 具体工厂:数据库日志记录器工厂 
class DatabaseLoggerFactory implements LoggerFactory {     
@Override     
public Logger createLogger() {         
return new DatabaseLogger();     
} }  

// 客户端使用 public class Main {     
public static void main(String[] args) {         
LoggerFactory factory = new FileLoggerFactory();         
Logger logger = factory.createLogger();         
logger.log("This is a log message.");     
} 
}

工厂方法模式在JDK中的应用:集合

   工厂方法模式更多例子:源码地址https://github.com/WRJcode/md-design-pattern/tree/master/factory-method/src/main/java/org/arvinw

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值