zoukankan      html  css  js  c++  java
  • PHP设计模式之:工厂模式

    <?php
    abstract class Operation
    {
        public numA = 0;
        public numB = 0;
    
        public function __construct($numA, $numB)
        {
            $this->numA = $numA;
            $this->numB = $numB;
        }
        abstract function getResult();
    }
    
    class OperationAdd extends Operation
    {
        public function getResult()
        {
            return numA+numB;
        }
    }
    
    class OperationSub extends Operation
    {
        public function getResult()
        {
            return numA - numB;
        }
    }
    
    class OperationMul extends Operation
    {
        public function getResult()
        {
            return numA * numB;
        }
    }
    
    class OperationDiv extends Operation
    {
        public function getResult()
        {
            if(numB == 0)
            {
                throw new Exception("除数不能为 0 。");
            }
            return (double) (numA / numB);
        }
    }
    
    /** *************************************** */
    // 简单运算工厂类
    class OperationFactory
    {
        public static createOperate($operation, $numA, $numB)
        {
            switch($operation)
            {
                case '+':
                    $oper = new OperationAdd($numA, $numB);
                    break;
                case '-':
                    $oper = new OperationSub($numA, $numB);
                    break;
                case '*':
                    $oper = new OperationMul($numA, $numB);
                    break;
                case '/':
                    $oper = new OperationDiv($numA, $numB);
                    break;
            }
            return $oper;
        }
    
    }
    
    /** ************************ */
    // 调用方式
    $numA = 100;
    $numB = 8;
    $operation = '+';
    $oper = OperationFactory::createOperate($operation, $numA, $numB);
    echo $oper.getResult();
    

      

      

  • 相关阅读:
    easyUI日期框,默认显示今天,今天以后的日期不能选
    vue实现下拉框全选和输入匹配
    【转载】CSS flex属性深入理解
    ES6学习之二
    Centos7(Firewall)防火墙命令
    DeDeCMS模板标签(2)
    DeDeCMS模板标签(1)
    常用js正则表达式大全
    linux yum 命令
    Linux软链接和硬链接
  • 原文地址:https://www.cnblogs.com/lin3615/p/3601322.html
Copyright © 2011-2022 走看看