diff --git a/README.md b/README.md new file mode 100644 index 0000000..723e712 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# 简单工厂模式 (Simple Factory Pattern) 示例 + +## 项目介绍 + +本项目展示了设计模式中的简单工厂模式(Simple Factory Pattern)的Java实现。简单工厂模式是一种创建型设计模式,它提供了一个创建对象的最佳方式。在简单工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。 + +## 设计模式说明 + +### 简单工厂模式的组成 + +1. **抽象产品(Product)**:定义产品的接口,是工厂方法模式所创建对象的超类型。 +2. **具体产品(Concrete Product)**:实现抽象产品接口的具体类。 +3. **工厂(Factory)**:负责创建具体产品的实例,包含创建产品的逻辑。 + +### 本项目实现的类图关系 + +- `Product` 接口:定义产品的共同操作 +- `ConcreteProductA` 和 `ConcreteProductB`:实现 `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. **易维护**:如果需要修改产品创建逻辑,只需修改工厂类 + +## 适用场景 + +- 工厂类负责创建的对象比较少 +- 客户端只关心传入工厂的参数,不关心如何创建对象的细节 + +## 注意事项 + +- 简单工厂模式不符合开闭原则(对扩展开放,对修改关闭) +- 如果需要添加新的产品类型,需要修改工厂类中的代码 +- 对于复杂的产品创建场景,可能需要考虑使用工厂方法模式或抽象工厂模式 \ No newline at end of file