在 PHP 中,静态工厂模式是一种工厂模式的变体,它使用静态方法而不是实例化工厂类来创建对象。这样可以通过直接调用类的静态方法来创建对象,而无需先实例化工厂类。

以下是一个简单的 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 StaticFactory {
    public static function createProduct($type) {
        switch ($type) {
            case 'A':
                return new ConcreteProductA();
            case 'B':
                return new ConcreteProductB();
            default:
                throw new \InvalidArgumentException("Invalid product type");
        }
    }
}

// 客户端代码
$productA = StaticFactory::createProduct('A');
echo $productA->getName(); // 输出 "Product A"

$productB = StaticFactory::createProduct('B');
echo $productB->getName(); // 输出 "Product B"

在这个例子中,Product 是抽象产品接口,ConcreteProductA 和 ConcreteProductB 是具体产品实现。StaticFactory 是静态工厂类,其中的 createProduct 方法是静态的,通过直接调用该方法,可以创建不同类型的产品。

使用静态工厂模式时,客户端无需实例化工厂类,而是通过调用静态方法来获取产品实例。这种方式可以简化客户端代码,但也需要注意,由于静态方法是全局的,可能会导致代码的可测试性下降。


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