美文网首页
简单工厂模式(Simple Factory模式)

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

作者: 苏康申 | 来源:发表于2020-03-07 00:49 被阅读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();
    

    相关文章

      网友评论

          本文标题:简单工厂模式(Simple Factory模式)

          本文链接:https://www.haomeiwen.com/subject/syczrhtx.html