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>
  • 相关阅读:
    [Winform]Media Player com组件应用中遇到的问题
    [Winform]Media Player播放控制面板控制,单击事件截获
    [Winform]Media Player组件全屏播放的设置
    [EF]数据上下文该如何实例化?
    [Winform]在关闭程序后,托盘不会消失的问题
    咏南中间件跨平台解决方案
    硬件中间件
    BASE64使用场景
    DELPHI7 ADO二层升三层新增LINUX服务器方案
    NGINX心跳检测
  • 原文地址:https://www.cnblogs.com/rxbook/p/6002992.html
Copyright © 2011-2022 走看看