简单工厂模式是一种创建型设计模式,它提供一个统一的接口来创建对象,但通过在工厂类中使用条件语句或者 switch 语句来确定要创建的对象类型。这种模式隐藏了对象的创建细节,使客户端代码无需关心具体的实例化过程。

以下是一个简单的 PHP 简单工厂模式的示例:
// 抽象产品接口
interface Product {
    public function getName();
}

// 具体产品A
class ConcreteProductA implements Product {
    public function getName() {
        return "Product A";
    }
}

// 具体产品B
class ConcreteProductB implements Product {
    public function getName() {
        return "Product B";
    }
}

// 简单工厂类
class SimpleFactory {
    public function createProduct($type) {
        switch ($type) {
            case 'A':
                return new ConcreteProductA();
            case 'B':
                return new ConcreteProductB();
            default:
                throw new \InvalidArgumentException("Invalid product type");
        }
    }
}

// 客户端代码
$factory = new SimpleFactory();

// 创建产品A
$productA = $factory->createProduct('A');
echo $productA->getName(); // 输出 "Product A"

// 创建产品B
$productB = $factory->createProduct('B');
echo $productB->getName(); // 输出 "Product B"

在这个例子中,Product 是抽象产品接口,ConcreteProductA 和 ConcreteProductB 是具体产品实现。SimpleFactory 是简单工厂类,负责根据客户端传递的参数创建不同类型的产品。

客户端通过调用简单工厂的 createProduct 方法来获取具体的产品实例,而无需关心具体产品的实例化过程。这样的设计使得客户端代码更加简洁,同时也方便了后续的扩展和维护。


转载请注明出处:http://www.zyzy.cn/article/detail/11936/PHP