zoukankan      html  css  js  c++  java
  • 工厂模式

    复制代码

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。

    QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

    /**
     * 计算器
     * @param  $op_num_1 操作数1
     * @param  $op_num_2 操作数2
     * @param  $op_str   操作符
     * @return 操作结果
     */
    function op($op_num_1,$op_num_2,$op_str) {
        $fun = op_factory($op_str);
        return $fun($op_num_1,$op_num_2);
    }
    /**
     * 我他丫无法描述该函数
     * @param  $op_str 操作符
     * @return 具体执行操作的函数
     */
    function op_factory($op_str) {
        switch ($op_str) {
            case '+':
                return 'op_add';
                break;
            default:
                return 'op_subtract';
                break;
        }
    }
    /**
     * 加法
     */
    function op_add($op_num_1,$op_num_2) {
        return $op_num_1 + $op_num_2;
    }
    /**
     * 减法
     */
    function op_subtract($op_num_1,$op_num_2) {
        return $op_num_1 - $op_num_2;
    }
    
    echo op(100,50,'-'),'<br/>';
    
    //----------------我--------是--------分--------割--------线----------------
    
    /**
     * 计算器工厂
     */
    class op_factory {
        public static function create_op($op_str) {
            switch ($op_str) {
                case '+':
                    return new op_add();
                    break;
                default:
                    return new op_subtract();
                    break;
            }
        }
    }
    /**
     * 计算器
     */
    abstract class op {
        public $op_num_1 = 0; //操作数1
        public $op_num_2 = 0; //操作数2
        abstract function get_result();
    }
    /**
     * 加法
     */
    class op_add extends op {
        public function get_result() {
            return $this->op_num_1 + $this->op_num_2;
        }
    }
    /**
     * 减法
     */
    class op_subtract extends op {
        public function get_result() {
            return $this->op_num_1 - $this->op_num_2;
        }
    }
    
    $op = op_factory::create_op('+'); //通过工厂生成对象
    $op->op_num_1 = 100;
    $op->op_num_2 = 50;
    print_r($op->get_result());

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。

    QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

    我的淘宝店,可以进去逛逛噢:https://shop108912636.taobao.com/index.htm?spm=2013.1.w5001-7867000954.3.1d29318dPlLar7&scene=taobao_shop

    QQ:1542385235 (PHP、Java、安卓苹果app制作修改、页面切图、各类模板修改、仿站,数据库修复、WAP制作修改 。我们团队是专门做网站开发的,都是有3年以上工作经验。需要后台系统开发,网页页面制作,app制作,ui设计的请加我qq联系。非诚勿扰!!) 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加!)。 QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)
  • 相关阅读:
    ASP.NET Core学习——7
    ASP.NET Core学习——6
    ASP.NET Core学习——6
    ASP.NET Core学习——5
    ASP.NET Core学习——4
    平衡的括号(名字怪怪的~)
    找复合单词
    卡片游戏
    Ducci 序列
    卡片游戏O(∩_∩)O
  • 原文地址:https://www.cnblogs.com/piwefei/p/4600533.html
Copyright © 2011-2022 走看看