码迷,mamicode.com
首页 > Web开发 > 详细

php策略模式实现简单计算器

时间:2019-12-21 17:03:22      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:oct   method   角色   ==   this   const   interface   模式   style   

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>策略模式</title>
</head>
<body>
<form action=‘./demo03.php‘ method="post">
    <input type="text" name="op1">
    <select name="op">
        <option value="Add">+</option>
        <option value="Sub">-</option>
        <option value="Multi">*</option>
        <option value="div">/</option>
    </select>
    <input type="text" name="op2">
    <p><input type="submit" name="" value="计算"></p>
</form>
</body>
</html>

PHP:

<?php
/**
 * 策略模式
 *
 * 实现加减乘除
 */

interface MathOp
{
    public function calculation(float $num1, float $num2);
}

//策略一 加
class MathAdd implements MathOp
{
    public function calculation(float $num1, float $num2)
    {
        // TODO: Implement calculation() method.
        return $num1+$num2;
    }
}

//策略二 减
class MathSub implements MathOp
{
    public function calculation(float $num1, float $num2)
    {
        // TODO: Implement calculation() method.
        return $num1-$num2;
    }
}

//策略三 乘
class MathMulti implements MathOp
{
    public function calculation(float $num1, float $num2)
    {
        // TODO: Implement calculation() method.
        return $num1*$num2;
    }
}

class MathDiv implements MathOp
{
    public function calculation(float $num1, float $num2)
    {
        // TODO: Implement calculation() method.
        if( $num2 == 0) {
            return "被除数不能为0";
        }
        return $num1/$num2;
    }
}

//环境角色 选择策略实现
class op
{
    private $mathop;

    public function __construct(string $type)
    {
        $this->mathop = ‘Math‘.$type;
    }

    public function calc (float $num1, float $num2)
    {
        $cls = new $this->mathop;
        echo $cls->calculation($num1, $num2);
    }
}

$type = $_POST[‘op‘];
$op1  = $_POST[‘op1‘];
$op2  = $_POST[‘op2‘];

$obj  = new op($type);
$obj->calc($op1, $op2);

php策略模式实现简单计算器

标签:oct   method   角色   ==   this   const   interface   模式   style   

原文地址:https://www.cnblogs.com/zhangxiaoj/p/12077411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!