zoukankan      html  css  js  c++  java
  • 【PHP设计模式 08_CeLue.php】策略模式

    <?php 
    /**
     * 【策略模式】----和“简单工厂”模式很相似
     * 根据不同运算符计算两个数的运算结果
     * 常规方式就是判断运算符然后进行if...else的操作
     * 现在使用“策略模式”
     */
    
    header("Content-type: text/html; charset=utf-8");
    
    if(isset($_POST['js']) && !empty($_POST['js'])){
        /*接口,和四个真实计算器*/
        interface Math{
            public function calc($op1,$op2);
        }
        class Jia implements Math{
            public function calc($op1, $op2){
                return $op1+$op2;
            }
        }
        class Jian implements Math{
            public function calc($op1, $op2){
                return $op1-$op2;
            }
        }
        class Cheng implements Math{
            public function calc($op1, $op2){
                return $op1*$op2;
            }
        }
        class Chu implements Math{
            public function calc($op1, $op2){
                return $op1/$op2;
            }
        }
        
        /*封装一个虚拟计算器*/
        class CMath{
            protected $jisuan = null;
            //$objType 对应的真实计算器的 Jia/Jian/Cheng/Chu
            public function __construct($type){
                if($type==1){
                    $objType = 'Jia';
                }elseif($type==2){
                    $objType = 'Jian';
                }elseif($type==3){
                    $objType = 'Cheng';
                }elseif($type==4){
                    $objType = 'Chu';
                }else{
                    exit('Error...');
                }
                $this->jisuan = new $objType();
            }
            public function jsq($num1,$num2){
                return $this->jisuan->calc($num1,$num2); 
            }
        }
        
        /*开始调用*/
        $js = $_POST['js'];
        $cmath = new CMath($js);
        $res = $cmath->jsq($_POST['num1'], $_POST['num2']);
        echo $res;
        
        
    }
    
    ?>
    
    
    <form action="?" method="post">
    <input type="text" name="num1">
    <select name="js">
        <option value="1">+</option>
        <option value="2">-</option>
        <option value="3">*</option>
        <option value="4">/</option>
    </select>
    <input type="text" name="num2">
    <button type="submit">提交</button>
    </form>
  • 相关阅读:
    AlterDialog 经常使用的样式
    C++编程-&gt;pair(对组)
    arcgis server10.2.2公布地图基础服务的详细步骤
    solr实战-(一)
    iOS开发-自己定义重用机制给ScrollerView加入子视图
    Day2下午解题报告
    Day2二分图笔记
    考前冲刺班成绩
    Day2平衡树笔记
    Day2上午解题报告
  • 原文地址:https://www.cnblogs.com/rxbook/p/6002992.html
Copyright © 2011-2022 走看看