简单工厂模式(Simple Factory模式)

2020-03-07  本文已影响0人  苏康申

什么是简单工厂模式


使用的频率也是非常高,它的官方解释为:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
工厂模式使一个类的实例化延迟到其子类。

这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(
这样工厂类才不用经常更改)。

PS:不修改代码的话,是无法扩展的。

简单工厂模式的作用

简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的
接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂,一定程度上可以很好的降低耦合度。

具体实现

Factory:工厂角色
工厂角色负责实现创建所有实例的内部逻辑


Product:抽象产品角色
抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口


ConcreteProduct:具体产品角色
具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。




//-----------抽象产品角色------------

//定义保险产品工厂获取产品
interface InsuranceProduct
{
    public function getProductList();
}

//-----------具体产品角色------------
//众安保险
class ZhongAn implements InsuranceProduct {

    public function getProductList()
    {
        return "ZhongAn Insurance ProductList";
    }
} 

//小雨伞保险
class XiaoYuSan implements InsuranceProduct {
    
    public function getProductList()
    {
        return "XiaoYuSan Insurance ProductList";
    }
} 

//齐欣保险
class QiXin implements InsuranceProduct {

    public function getProductList()
    {
        return "QiXin Insurance ProductList";
    }
} 

//-----------工厂角色------------
class Factory
{
    public static function createProductFactory($param)
    {
        $result = null;
        switch($param)
        {
            case 'QiXin':
                $result = new QiXin();
                break;
            case 'XiaoYuSan':
                $result = new XiaoYuSan();
                break;
            case 'ZhongAn':
                $result = new ZhongAn();
                break;
        }
        return $result;
    }
}

echo  Factory::createProductFactory("QiXin")->getProductList();
上一篇下一篇

猜你喜欢

热点阅读