xcguoyu 2020-02-14
策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。

<?php
/**
* 抽象活动算法类
*/
namespace strategy;
abstract class StrategyAbstract
{
/**
* 具体活动算法方法
* @return mixed
*/
public abstract function doAction($money);
}2. 具体算法产品类
<?php
/**
* 满减算法产品类
*/
namespace strategy;
class ManJianStrategy extends StrategyAbstract
{
public function doAction($money)
{
echo ‘满减算法:原价‘. $money .‘元‘;
}
}<?php
/**
* 打折算法产品类
*/
namespace strategy;
class DaZheStrategy extends StrategyAbstract
{
/**
* 具体算法实现
* @param $money
* @return mixed|void
*/
public function doAction($money)
{
echo ‘打折算法:原价‘. $money .‘元‘;
}
}3. 策略工厂类
<?php
/**
* 策略工厂类
*/
namespace strategy;
class StrategyFind
{
private $strategy_mode;
/**
* 初始时,传入具体的策略对象
* @param $mode
*/
public function __construct($mode)
{
$this->strategy_mode = $mode;
}
/**
* 执行打折算法
* @param $money
*/
public function get($money)
{
$this->strategy_mode->doAction($money);
}
}入口文件
<?php namespace strategy; include ‘../autoload.php‘; // 满减折算 $mode1 = new StrategyFind(new ManJianStrategy()); $mode1->get(100); echo ‘<br>‘; // 满减活动 $mode2= new StrategyFind(new DaZheStrategy()); $mode2->get(100);
原文:https://www.cnblogs.com/houdabao/p/9546871.html
<?php. if (!empty($_POST)) {. $data1 = $_POST["data1"];$data2 = $_POST["data2"];$fuhao = $_POST["fuh