简单工厂模式

39 阅读1分钟

在简单工厂模式中,客户端不需要知道具体产品的类名,只需知道产品对应的参数,由工厂类根据参数来创建具体的产品实例。

下面是一个简单工厂模式的示例:

// 产品接口
interface Product {
    void produce();
}

// 具体产品A
class ConcreteProductA implements Product {
    @Override
    public void produce() {
        System.out.println("生产具体产品A");
    }
}

// 具体产品B
class ConcreteProductB implements Product {
    @Override
    public void produce() {
        System.out.println("生产具体产品B");
    }
}

// 简单工厂类
class SimpleFactory {
    public static Product createProduct(String type) {
        if ("A".equals(type)) {
            return new ConcreteProductA();
        } else if ("B".equals(type)) {
            return new ConcreteProductB();
        }
        return null;
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Product productA = SimpleFactory.createProduct("A");
        productA.produce();

        Product productB = SimpleFactory.createProduct("B");
        productB.produce();
    }
}

在这个例子中,SimpleFactory 类负责根据参数创建不同的产品实例。客户端只需调用工厂类的方法并传入参数,无需知道具体产品的实现细节。

实际上,SimpleDateFormat 就是 JDK 中的简单工厂模式的应用。通过传入不同的日期格式参数,可以得到相应的 SimpleDateFormat 实例。

要注意的是,简单工厂模式对于新增产品的扩展确实不够灵活,如果需要支持新增产品,需要修改工厂类的代码。这也是简单工厂模式的缺点之一。