加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php工厂技巧模式是什么

发布时间:2022-07-21 13:50:36 所属栏目:PHP教程 来源:互联网
导读:引言 所属:创建型模式,常用设计模式之一 工厂模式分为:简单工厂模式、工厂方法模式、静态工厂模式、抽象工厂模式。 下面为工厂方法模式。 模式概述 工厂方法就是为了解决简单工厂扩展性的问题,相信大家再看简单工厂是也发现了其缺陷, 产品类A 产品类B
    引言
 
      所属:创建型模式,常用设计模式之一
 
      工厂模式分为:简单工厂模式、工厂方法模式、静态工厂模式、抽象工厂模式。
 
      下面为工厂方法模式。
 
    模式概述
 
      工厂方法就是为了解决简单工厂扩展性的问题,相信大家再看简单工厂是也发现了其缺陷,
 
         产品类A
 
        产品类B
 
    举个栗子
 
        一个商城网站,支持多种支付功能,例如:支付宝、微信、某银行、某银行……,程序如何设计。
 
        如果按照简单工厂模式的话,声明一个工厂类,由工厂类判断调用哪种支付方式,那么必然存在工厂类不断修改的操作,每增加一个支付方式都要去修改工厂类,违背了【开放封闭】原则
 
        解决的问题:
 
          1. 解决简单工厂【开放封闭】原则问题      
 
        流程图如下:
 
              
 
    程序设计代码:
 
    1. 测试入口index.php
 
  
 
    <?php
 
    namespace factory_method;
 
     
 
    include '../autoload.php';
 
     
 
    // 张三支付
 
    $param = [];
 
    $param['name'] = '张三';
 
    $param['money'] = 100;
 
  
    $factory = new WeiXinFactory();
 
    $mode = $factory->createMode(); // 使用工厂类获取产品类
 
    $mode->doAction($param); // 执行产品类方法
 
    2. 工厂类接口,支付宝支付工厂类,微信支付工厂类,银联支付工厂类。
 
    工厂类接口:PayFactoryInterface.php
 
  
    namespace factory_method;/**
 
     * 工厂类接口
 
     * Interface PayFactoryInterface
 
     * @package factory_method */interface PayFactoryInterface
 
    {    public function createMode();
 
    }
 
    支付宝支付工厂类:ZhiFuBaoFactory.php
  
     * Class ZhiFuBaoFactory
 
     * @package factory_method */class ZhiFuBaoFactory implements PayFactoryInterface
 
    {    public function createMode()
 
        {        return new ZhiFuBao();
 
        }
 
    }
 
    微信支付工厂类:WeiXinFactory.php
 
  
    <?php
 
    namespace factory_method;/**
 
     * 微信产品类转为工厂类
 
     * Class WeiXinFactory
 
     * @package factory_method */class WeiXinFactory implements PayFactoryInterface
 
    {    public function createMode()
 
        {        return new WeiXin();
  
    <?php
 
    namespace factory_method;/**
 
     * 银联产品类转工厂类
 
     * Class YinLianFactory
 
     * @package factory_method */class YinLianFactory implements PayFactoryInterface
 
    {    public function createMode()
 
        {        return new Yinlian();
 
        }
 
    }
 
    3. 产品类接口,支付宝支付产品类,微信支付产品类,银联支付产品类。
 
    产品类接口:PayInterface.php
  
    <?php
 
    namespace factory_method;/**
 
     * Interface PayInterface
 
     * 定义支付Api规范接口 */interface PayInterface
 
    {    /**
 
         * 发起扣款
 
        public function sendNews();
 
    }
 
    支付宝支付产品类:ZhiFuBao.php
  
 
    <?php
 
    namespace factory_method;// 银联class ZhiFuBao implements PayInterface
 
    {    public function doAction($param)
 
        {        $name = $param['name'];        $money = $param['money'];        echo $name . '使用支付宝支付,支付金额' . $money;
 
        }    /**
 
         * 记录日志     */
 
        public function payLog()
 
        {
 
     
 
        }    /**
 
         * 发送消息     */
 
        public function sendNews()
 
        {
  
 
    <?php
 
    namespace factory_method;// 银联class WeiXin implements PayInterface
 
    {    public function doAction($param)
 
        {        $name = $param['name'];        $money = $param['money'];        echo $name . '使用微信支付,支付金额' . $money;
 
        }    /**
 
         * 记录日志     */
 
        public function payLog()
 
        {
 
     
 
        }    /**
 
         * 发送消息     */
  
    <?php
 
    namespace factory_method;// 银联class Yinlian implements PayInterface
 
    {    public function doAction($param)
 
        {        $name = $param['name'];        $money = $param['money'];        echo $name . '使用银联支付,支付金额' . $money;
 
        }    /**
 
         * 记录日志     */
 
        public function payLog()
 
        {
 
     
 
        }    /**
 
         * 发送消息     */
 
        public function sendNews()
 
        {
 
     
 
        }
 
    }

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读