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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 简单工厂模式实现
## 项目介绍
本项目实现了设计模式中的**简单工厂模式**( 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
```
## 简单工厂模式的优缺点
### 优点:
- 封装了对象的创建过程,客户端不需要知道如何创建对象
- 降低了客户端与具体产品的耦合度
- 便于统一管理对象的创建逻辑
### 缺点:
- 工厂类集中了所有产品的创建逻辑,违反了开闭原则
- 添加新产品时需要修改工厂类的代码
## 适用场景
- 工厂类负责创建的对象比较少
- 客户端只知道传入工厂类的参数,不关心如何创建对象的逻辑