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

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

相关文章