设计模式之策略模式
基本介绍
策略模式就是使用封装一个公共抽象算法,每个算法(比如,打折算法,满减算法)实现这个接口,然后搞个策略工厂类来调用这些算法,本质上是一种高级的封装方式。
demo
定义接口抽象要封装的一类行为
interface SendMessage
{
public function send();
}
定义操作类实现上述接口,如果增加新的执行分支只需要增加一个实现类,对原有代码0修改
class Ali implements SendMessage
{
public function send()
{
var_dump('阿里发送消息');
}
}
定义工厂类调用方法,执行哪一个分支,由实例化的对象参数决定
class MessageContext
{
private $class;
public function __construct(SendMessage $msgClass)
{
$this->class = $msgClass;
}
public function sendMsg()
{
$this->class->send();
}
}
测试脚本
/**
* Desc:策略模式测试
* Author:glt 2022/1/11 10:22
*/
public function celve()
{
//阿里
$ali = new Ali();
$msgClass = new MessageContext($ali);
$msgClass->sendMsg();
//京东
$jingdong = new Jingdong();
$msgClass = new MessageContext($jingdong);
$msgClass->sendMsg();
//百度
$bd = new Baidu();
$msgClass = new MessageContext($bd);
$msgClass->sendMsg();
}

浙公网安备 33010602011771号