设计模式之策略模式

基本介绍

策略模式就是使用封装一个公共抽象算法,每个算法(比如,打折算法,满减算法)实现这个接口,然后搞个策略工厂类来调用这些算法,本质上是一种高级的封装方式。

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();
    }
posted @   gltttt  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示