说明:
工厂方法模式, 简单工厂模式, 静态工厂模式 这三者 都是 抽象工厂模式的简化版本, 单独针对某一方面
本模式重点表述, 具体的工厂使用不同的方式 来生产产品
实现代码:
<?php /** * 工厂方法模式示例 * User: 蓝冰大侠 */ class CFactoryMethod extends SController { public function index() { //通过A工厂生成产品 $factory=new FactoryA(); $obj=$factory->create('Product'); var_dump($obj); //object(ProductX)#9 (1) { ["name":protected]=> string(9) "A-Product" } //通过B工厂生成产品 $factory=new FactoryB(); $obj=$factory->create('Product'); var_dump($obj); //object(ProductX)#8 (1) { ["name":protected]=> string(9) "B-Product" } } } //定义产品基类(抽象) abstract class Product { protected $name; public function __construct(string $name) { $this->name = $name; } } //定义工厂基类(抽象),工厂可以生成产品 abstract class AbstractFactory { //具体工厂子类必须实现,但不对外 abstract protected function createProduct(string $name): Product; //对外提供创建产品的方法 public function create(string $name){ return $this->createProduct($name); } } //定义X产品,也可根据需要,定义 Y,Z产品 class ProductX extends Product { //X产品的具体实现细节 } //定义工厂A class FactoryA extends AbstractFactory { protected function createProduct(string $name): Product { return new ProductX('A-'.$name); } } //定义工厂B class FactoryB extends AbstractFactory { protected function createProduct(string $name): Product { return new ProductX('B-'.$name); } }