Java 中简单工厂、工厂方法、抽象工厂的区别是什么?

· 约 4 分钟读完 · 第 155 / 274 章

推荐答案

  • 简单工厂模式:通过一个工厂类根据传入的参数决定创建哪种产品类的实例。它不属于 GoF 23 种设计模式,但是一种常用的编程习惯。
  • 工厂方法模式:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类。
  • 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式通常用于创建产品族。

本题详细解读

简单工厂模式

简单工厂模式的核心是一个工厂类,它负责根据客户端传递的参数来创建不同类型的对象。这种模式的优点是客户端不需要知道具体的类名,只需要知道工厂类和参数即可。缺点是当需要增加新的产品时,必须修改工厂类的代码,违反了开闭原则。

工厂方法模式

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式将对象的实例化推迟到子类,从而使得子类可以在不修改代码的情况下扩展系统的功能。

抽象工厂模式

抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式通常用于创建产品族,每个工厂类负责创建一组相关的产品。

区别总结

  • 简单工厂模式:一个工厂类负责所有产品的创建,适用于产品种类较少且不经常变化的场景。
  • 工厂方法模式:每个产品对应一个工厂类,适用于产品种类较多且可能经常变化的场景。
  • 抽象工厂模式:每个工厂类负责创建一组相关的产品,适用于需要创建产品族的场景。