欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 23种设计模式-创建型模式之工厂方法模式(Java版本)

23种设计模式-创建型模式之工厂方法模式(Java版本)

2025/10/29 13:06:05 来源:https://blog.csdn.net/DreamCollector/article/details/147314340  浏览:    关键词:23种设计模式-创建型模式之工厂方法模式(Java版本)

Java 工厂方法模式(Factory Method Pattern)详解

🌟 什么是工厂方法模式?

工厂方法模式是一种创建型设计模式,定义一个创建对象的接口,让子类决定实例化哪一个类
它让类的实例化推迟到子类进行,实现了代码解耦与可扩展性增强


🧠 使用场景

  • 不知道对象的具体类型时
  • 需要将对象的创建与使用解耦
  • 代码需要遵循开闭原则,便于扩展新产品

🏗️ 模式结构

  • Product(抽象产品类)
  • ConcreteProduct(具体产品类)
  • Factory(抽象工厂类)
  • ConcreteFactory(具体工厂类)

✅ 示例:创建不同类型的日志类

抽象产品接口

public interface Logger {void log(String message);
}

具体产品实现

public class FileLogger implements Logger {public void log(String message) {System.out.println("File log: " + message);}
}public class ConsoleLogger implements Logger {public void log(String message) {System.out.println("Console log: " + message);}
}

抽象工厂

public interface LoggerFactory {Logger createLogger();
}

具体工厂类

public class FileLoggerFactory implements LoggerFactory {public Logger createLogger() {return new FileLogger();}
}public class ConsoleLoggerFactory implements LoggerFactory {public Logger createLogger() {return new ConsoleLogger();}
}

客户端调用

public class Client {public static void main(String[] args) {LoggerFactory factory = new FileLoggerFactory(); // 可替换为 ConsoleLoggerFactoryLogger logger = factory.createLogger();logger.log("日志记录开始!");}
}

🆚 与简单工厂的区别

简单工厂工厂方法模式
由一个工厂类创建所有产品每个产品对应一个具体工厂类
不符合开闭原则符合开闭原则
添加新产品需要改工厂类添加新产品只需新增工厂子类

🧩 优点

  • 符合开闭原则,增加新产品不用修改已有代码
  • 封装具体产品的创建逻辑,降低耦合
  • 更灵活,易于扩展

⚠️ 缺点

  • 类的数量增加,每新增一个产品就需要增加一个工厂类
  • 增加系统复杂度

✅ 使用建议

当你需要将对象创建过程从客户端中抽离出来,且可能会新增新类型产品时,使用工厂方法模式是最佳选择

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词