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();
    

      

      

  • 相关阅读:
    转:孙振耀谈人生(推荐)
    自绘按钮的实现
    数据结构知识
    Direct Show采集图像实例
    视觉跟踪
    改变对话框控件的颜色
    笔试题
    CBitmapButton的使用
    Rotor (SSCLI) 2.0 登场!
    Under the hood: 从Win32 SEH到CLI异常处理模型
  • 原文地址:https://www.cnblogs.com/lin3615/p/3601322.html
Copyright © 2011-2022 走看看