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