策略模式(Strategy Pattern)
在策略模式中,一个类的行为或其算法可以在运行时更改。
<?php
// 定义策略接口
interface Strategy
{
public function doOperation($num1, $num2);
}
// 加法实体类
class OperationAdd implements Strategy
{
public function doOperation($num1, $num2)
{
return $num1 + $num2;
}
}
// 减法实体类
class OperationMinus implements Strategy
{
public function doOperation($num1, $num2)
{
return $num1 - $num2;
}
}
// 乘法实体类
class OperationMultiply implements Strategy
{
public function doOperation($num1, $num2)
{
return $num1 * $num2;
}
}
class Calculation
{
protected $strategy;
public function __construct(Strategy $strategy)
{
$this->strategy = $strategy;
}
public function calculate($num1, $num2)
{
return $this->strategy->doOperation($num1, $num2);
}
}
$num1 = 10;
$num2 = 88;
$add = new Calculation(new OperationAdd());
echo "$num1 + $num2 = " . $add->calculate($num1, $num2) . "<br />";
$minus = new Calculation(new OperationMinus());
echo "$num1 - $num2 = " . $minus->calculate($num1, $num2) . "<br />";
$multiply = new Calculation(new OperationMultiply());
echo "$num1 x $num2 = " . $multiply->calculate($num1, $num2) . "<br />";
结果