简介
模式定义
简单工厂模式(Simple Factory):根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类,用来创建其他类的实例,被创建的实例通常都具有共同的父类。
模式特点
简单工厂模式包含三个角色:
- Factory:工厂,负责实现创建所有实例
- Product:抽象产品,是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
- ConcreteProduct:具体产品,是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。
优缺点
- 只需要调用工厂方法并传入正确参数,即可得到对象。
- 增加新产品时,需要修改工厂类的判断逻辑,违背了开闭原则。
一般在确定需要工厂创建的对象数量较少且相对稳定时,才会使用简单工厂模式。
PHP 代码示例
<?php
abstract class Product
{
abstract public function f1();
}
class ProductA extends Product
{
public function f1()
{
echo "this is ProductA";
}
}
class ProductB extends Product
{
public function f1()
{
echo "this is ProductB";
}
}
class Factory
{
public static function getInstance($product)
{
if ($product == "A") {
return new ProductA();
} elseif ($product == "B") {
return new ProductB();
}
}
}
$obj = Factory::getInstance("A");
$obj->f1();