PHP设计模式之策略模式

策略模式(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 />";

结果


猜你喜欢

转载自blog.csdn.net/qq_36045946/article/details/81007254
今日推荐