什么是简单工厂模式?
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
该模式中包含的角色及其职责
工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
抽象产品(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
下面给出一个具体实现简单工厂模式的案例:
- 首先创建产品和产品实现类
package com.lxc.designpattern;
/**
* 产品接口
* 定义了产品的基本行为
*/
public interface Product {
/**
* 使用产品
*/
void use();
}
/**
* 具体产品A
* 实现了产品接口的具体产品类
*/
class ProductA implements Product {
@Override
public void use() {
System.out.println("Using Product A");
}
}
/**
* 具体产品B
* 实现了产品接口的具体产品类
*/
class ProductB implements Product {
@Override
public void use() {
System.out.println("Using Product B");
}
}
- 然后创建工厂类,通过工厂类创建不同类型的产品对象。
package com.lxc.designpattern;
/**
* 简单工厂模式示例
* 负责根据传入的类型创建对应的产品对象
*/
public class ProductFactory {
/**
* 创建产品对象的工厂方法
* @param type 产品类型
* @return 对应的产品对象
* @throws IllegalArgumentException 如果传入的产品类型无效
*/
public static Product createProduct(String type) {
switch (type) {
case "A":
return new ProductA(); // 创建ProductA对象
case "B":
return new ProductB(); // 创建ProductB对象
default:
throw new IllegalArgumentException("Invalid product type");
}
}
}
以上就是如何使用工厂模式来解耦对象的创建过程,通过工厂类创建不同类型的产品对象。