简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个简单的工厂类,用于根据客户端的请求创建不同类型的对象。在Java中,简单工厂模式可以通过一个工厂类中的静态方法来创建对象。
下面是一个简单工厂模式的示例:
// 抽象产品类
interface Product {
void operation();
}
// 具体产品类 A
class ConcreteProductA implements Product {
@Override
public void operation() {
System.out.println("ConcreteProductA operation");
}
}
// 具体产品类 B
class ConcreteProductB implements Product {
@Override
public void operation() {
System.out.println("ConcreteProductB operation");
}
}
// 简单工厂类
class SimpleFactory {
public static Product createProduct(String type) {
if (type.equalsIgnoreCase("A")) {
return new ConcreteProductA();
} else if (type.equalsIgnoreCase("B")) {
return new ConcreteProductB();
}
throw new IllegalArgumentException("Invalid product type: " + type);
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Product productA = SimpleFactory.createProduct("A");
productA.operation(); // Output: ConcreteProductA operation
Product productB = SimpleFactory.createProduct("B");
productB.operation(); // Output: ConcreteProductB operation
}
}
在上面的示例中,我们定义了一个抽象产品接口 `Product`,以及两个具体产品类 `ConcreteProductA` 和 `ConcreteProductB`,它们都实现了 `Product` 接口。然后,我们创建了一个简单工厂类 `SimpleFactory`,其中的静态方法 `createProduct()` 根据客户端传入的类型参数来创建不同类型的产品对象。最后,在客户端代码中,我们通过简单工厂的静态方法来创建产品对象,并调用其操作方法。
简单工厂模式的优点是客户端不需要知道具体产品的实现细节,只需要与工厂类进行交互。这样可以降低了客户端与具体产品之间的耦合度,并提供了一种集中化创建对象的方式。但同时,如果需要添加新的产品类型,就需要修改工厂类的代码,违反了开闭原则。因此,简单工厂模式适用于产品类型相对稳定且不频繁变化的情况。