# 简单工厂模式实现 ## 项目介绍 本项目实现了设计模式中的**简单工厂模式**(Simple Factory Pattern),这是一种创建型设计模式,用于封装对象的创建逻辑。 ## 设计模式说明 ### 简单工厂模式的核心角色: 1. **抽象产品(Product)** - 定义产品的接口或抽象类 2. **具体产品(ConcreteProduct)** - 实现抽象产品接口的具体类 3. **工厂类(Factory)** - 负责创建具体产品实例的类 ### 本项目中的实现: - **Product** - 产品接口,定义了operation()方法 - **ConcreteProductA、ConcreteProductB** - 具体产品实现 - **Factory** - 工厂类,通过静态方法createProduct()创建产品 ## 项目结构 ``` ├── src/ │ └── main/ │ └── java/ │ ├── Product.java # 产品接口 │ ├── ConcreteProductA.java # 具体产品A │ ├── ConcreteProductB.java # 具体产品B │ ├── Factory.java # 工厂类 │ └── TestFactory.java # 测试类 └── README.md # 项目说明文档 ``` ## 代码特点 - ✅ 遵循SOLID设计原则,特别是单一职责原则 - ✅ 接口与实现分离,符合依赖倒置原则 - ✅ 完善的参数验证和异常处理机制 - ✅ 详细的JavaDoc文档注释 - ✅ 全面的测试用例覆盖 ## 使用示例 ```java // 创建产品A Product productA = Factory.createProduct("A"); productA.operation(); // 输出: ConcreteProductA 执行操作 // 创建产品B Product productB = Factory.createProduct("B"); productB.operation(); // 输出: ConcreteProductB 执行操作 ``` ## 运行测试 在项目目录下执行以下命令运行测试: ```bash cd src/main/java javac *.java java TestFactory ``` ## 简单工厂模式的优缺点 ### 优点: - 封装了对象的创建过程,客户端不需要知道如何创建对象 - 降低了客户端与具体产品的耦合度 - 便于统一管理对象的创建逻辑 ### 缺点: - 工厂类集中了所有产品的创建逻辑,违反了开闭原则 - 添加新产品时需要修改工厂类的代码 ## 适用场景 - 工厂类负责创建的对象比较少 - 客户端只知道传入工厂类的参数,不关心如何创建对象的逻辑