工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式将类的实例化推迟到其子类。

以下是一个简单的 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";
    }
}

// 抽象工厂
interface Factory {
    public function createProduct(): Product;
}

// 具体工厂A
class ConcreteFactoryA implements Factory {
    public function createProduct(): Product {
        return new ConcreteProductA();
    }
}

// 具体工厂B
class ConcreteFactoryB implements Factory {
    public function createProduct(): Product {
        return new ConcreteProductB();
    }
}

// 客户端代码
$factoryA = new ConcreteFactoryA();
$productA = $factoryA->createProduct();
echo $productA->getName();  // 输出 "Product A"

$factoryB = new ConcreteFactoryB();
$productB = $factoryB->createProduct();
echo $productB->getName();  // 输出 "Product B"

在这个例子中,Product 是抽象产品接口,ConcreteProductA 和 ConcreteProductB 是具体的产品实现。Factory 是抽象工厂接口,而 ConcreteFactoryA 和 ConcreteFactoryB 是具体工厂的实现。

客户端可以选择使用不同的工厂来创建不同类型的产品,而不必关心产品的具体类。这样的设计使得系统更加灵活,易于扩展,可以轻松地引入新的产品类型,而不必修改客户端代码。


转载请注明出处:http://www.pingtaimeng.com/article/detail/11933/PHP