简单工厂模式

通常来说,不把简单工厂模式归纳在 23 种设计模式中。

<?php
 
class Creator
{
public function createProduct(string $type): Product
{
switch ($type) {
case 'A':
return new ConcreteProductA();
case 'B':
return new ConcreteProductB();
default:
throw new Exception('not found product');
}
}
}
 
abstract class Product
{
}
 
class ConcreteProductA extends Product
{
}
 
class ConcreteProductB extends Product
{
}
 
$creator = new Creator();
$creator->createProduct('A');

上述的 Creator 是一个简单工厂,其中的 createProduct 函数,根据给定的 type 不同生产不同的产品。但是无论 type 是什么,得到的都是 Product 的子类。