<?php
/**
 * Created by PhpStorm.
 * User: hufangfang
 * Date: 2020/9/14
 * Time: 9:48 PM
 */

/*
 * 抽象类规定具体策略必须完成的方法
 */
abstract class Strategy{
    /*
    具体策略必须执行的方法
    */
    public abstract function doSomething($num1,$num2);
}
/*
 * 具体实现类 加法
 */
class Plus extends Strategy{
    public function doSomething($num1,$num2)
    {
        return $num1+$num2;
    }
}
/*
 * 具体实现类 乘法
 */
class Multiply extends Strategy{
    public function doSomething($num1,$num2)
    {
        return $num1*$num2;
    }
}
/*
 * 把策略组装起来
 */
class StrategyAdd{
    private $method;
    public function __construct($class)
    {
        $this->method = $class;
    }
    public function exec($num1,$num2){
        return $this->method->doSomething($num1,$num2);
    }
}
//采用不同的策略得到不同的结果
$model = new StrategyAdd(new Plus());
echo $model->exec(2,3);
$model = new StrategyAdd(new Multiply());
echo $model->exec(2,3);
最后修改:2020 年 09 月 16 日 12 : 09 PM
如果觉得我的文章对你有用,请随意赞赏