场景:根据传递的参数不同,进行加减乘除运算
$ope = $_POST['operation'];
if( $ope == '+' ) {
...
} else if ( $ope == '-' ) {
...
}...
使用策略模式:
<?php
interface Math {
public function calc($op1, $op2);
}
class MathAdd implements Math {
public function calc($op1, $op2) {
return $op1 + $op2;
}
}
class MathSum implements Math {
public function calc($op1, $op2) {
return $op1 - $op2;
}
}
class MathMul implements Math {
public function calc($op1, $op2) {
return $op1 * $op2;
}
}
class MathDiv implements Math {
public function calc($op1, $op2) {
return $op1 / $op2;
}
}
//根据op,制造不同对象,并且调用
//封装虚拟计算器
class CMath {
protected $calc = null;
public function __construct($type) {
$calc = 'Math' . $type;
$this->calc = new $calc();
}
public function calc($op1, $op2) {
$this->calc->calc($op1, $op2);
}
}
$type = $_POST['op'];
$op1 = $_POST['op1'];
$op2 = $_POST['op2'];
$cmath = new CMath($type);
echo $cmath->calc($op1, $op2);