You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

简单工厂模式 (Simple Factory Pattern) 示例

项目介绍

本项目展示了设计模式中的简单工厂模式Simple Factory Pattern的Java实现。简单工厂模式是一种创建型设计模式它提供了一个创建对象的最佳方式。在简单工厂模式中我们在创建对象时不会对客户端暴露创建逻辑而是通过一个共同的接口来指向新创建的对象。

设计模式说明

简单工厂模式的组成

  1. 抽象产品Product:定义产品的接口,是工厂方法模式所创建对象的超类型。
  2. 具体产品Concrete Product:实现抽象产品接口的具体类。
  3. 工厂Factory:负责创建具体产品的实例,包含创建产品的逻辑。

本项目实现的类图关系

  • Product 接口:定义产品的共同操作
  • ConcreteProductAConcreteProductB:实现 Product 接口的具体产品类
  • Factory:工厂类,负责创建不同类型的产品实例

文件结构

src/
└── main/
    └── java/
        ├── Product.java              # 产品接口
        ├── ConcreteProductA.java     # 具体产品A
        ├── ConcreteProductB.java     # 具体产品B
        └── Factory.java              # 工厂类

代码说明

Product.java

定义产品接口,声明所有产品都需要实现的操作方法。

ConcreteProductA.java 和 ConcreteProductB.java

具体产品类,实现 Product 接口,提供特定的操作实现。

Factory.java

工厂类,包含 createProduct 静态方法,根据传入的参数创建不同类型的产品实例。同时包含 main 方法用于测试代码功能。

使用方法

  1. 确保已安装JDK
  2. 编译代码:
    cd src/main/java
    javac *.java
    
  3. 运行示例:
    java Factory
    

设计优点

  1. 封装性:客户端不需要知道产品的创建细节
  2. 解耦:客户端与具体产品类解耦
  3. 易维护:如果需要修改产品创建逻辑,只需修改工厂类

适用场景

  • 工厂类负责创建的对象比较少
  • 客户端只关心传入工厂的参数,不关心如何创建对象的细节

注意事项

  • 简单工厂模式不符合开闭原则(对扩展开放,对修改关闭)
  • 如果需要添加新的产品类型,需要修改工厂类中的代码
  • 对于复杂的产品创建场景,可能需要考虑使用工厂方法模式或抽象工厂模式