设计模式之策略模式
基本介绍
策略模式就是使用封装一个公共抽象算法,每个算法(比如,打折算法,满减算法)实现这个接口,然后搞个策略工厂类来调用这些算法,本质上是一种高级的封装方式。
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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?