浅谈PHP设计模式的策略模式

简介:

策略模式又叫做政策模式,用于如何组织和调用算法的,是属于行为型模式的一种。
策略模式需要三个角色构成:

  1. Context 封装角色:也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。
  2. Strategy 抽象策略角色:通常为接口,指定规则。
  3. ConcreteStrategy 具体策略角色:实现抽象策略中的操作,该类含有具体的算法。

适用场景:

  1. 优化单元测试,每个测试都有自己独特的算法,可利用策略模式自定义实现。
  2. 实现同一类问题的不同解决方案的场景。

优点:

算法可以通过参数自由切换。
方便扩展,增加策略只需要实现接口就行了。

缺点:

增加类数量。

其它:

与工厂模式的对比:
工厂模式是用来创建对象的。策略模式是如何组织、调用这些算法。结果一样但是初衷不同。

代码:

//定义算法接口 抽象策略角色
interface CalcInterface {
    public function calc($num1, $num2);
}


//定义加法类 具体策略角色
class Add implements CalcInterface {
    public function calc($num1, $num2) {
        return $num1 + $num2;
    }
}


//定义减法类 具体策略角色
class Sub implements CalcInterface {
    public function calc($num1, $num2) {
        return $num1 - $num2;
    }
}


//上下文角色 承上启下
class Context {
    private $strategy;
    public function __construct(CalcInterface $strategy) {
        $this->strategy = $strategy;
    }

    public function run($num1, $num2) {
        return $this->strategy->calc($num1, $num2);
    }
}


//调用端==========================================================
echo (new Context(new Add()))->run(1,2);
echo (new Context(new Sub()))->run(1,2);

原文链接:https://www.cnblogs.com/phpphp/p/16845215.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈PHP设计模式的策略模式 - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月27日

相关文章

  • PHP定时执行任务的3种方法详解

    PHP定时执行任务的3种方法详解 在Web开发中,经常会需要定时执行某些任务,比如清理缓存、备份数据等。PHP作为一种流行的Web编程语言,自然也提供了实现定时任务的方法。本文将详细介绍PHP定时执行任务的3种方法,分别是: 1.使用PHP内置的定时器实现 2.使用Crontab实现 3.使用外部工具库实现 使用PHP内置的定时器实现 PHP提供了set_t…

    PHP 2023年5月23日
    00
  • 脑洞大开:对苹果发布会邀请函的10种解读

    这里为大家详细讲解一下“脑洞大开:对苹果发布会邀请函的10种解读”的完整攻略。 1. 了解苹果发布会邀请函的背景 在对苹果发布会邀请函进行解读之前,我们需要先了解一下背景。苹果公司通常会在每年的3月和9月举行iPhone、iPad等产品的发布会,发布会的内容包括新产品的发布、功能升级和相关软件的更新等。邀请函通常是一个精心设计的邮件或海报,包含了一些暗示、引…

    PHP 2023年5月27日
    00
  • 关于Laravel Route重定向的一个注意点

    接下来我会为大家详细讲解关于 Laravel Route 重定向的一个注意点。 问题描述 在 Laravel 开发过程中,我们经常需要定义路由。有时,我们需要将某个路由重定向到另一个路由上。这时,我们可以使用 Laravel 路由的 redirect 方法。例如: Route::redirect(‘/page1’, ‘/page2’); 这个例子表示,当用户…

    PHP 2023年5月23日
    00
  • PHP将进程作为守护进程的方法

    如果想要使用PHP创建守护进程,一种常见的方法是创建一个后台进程并将其分离,以便即使PHP脚本执行完毕,进程仍然能够运行。下面是PHP将进程作为守护进程的基本过程: 创建子进程:使用fork()函数创建一个子进程。 $pid = pcntl_fork(); 这里使用pcntl_fork()函数创建子进程,$pid表示主进程和子进程的进程ID。 子进程创建新会…

    PHP 2023年5月23日
    00
  • php多进程应用场景实例详解

    PHP多进程应用场景实例详解 PHP虽然是一门脚本语言,但是也可以通过多进程的方式来提高程序的并发能力,从而提高程序的性能。本文将详细讲解PHP多进程的应用场景与实例,并提供代码示例。 什么是多进程? 多进程指的是同一程序可以同时执行多次,每次执行都会开启一个新的进程,这些进程各自独立完成任务,从而提高程序的并发能力。 多进程的应用场景 1. 并行处理任务 …

    PHP 2023年5月23日
    00
  • PHP 搜索查询功能实现

    下面我来为大家详细讲解一下“PHP 搜索查询功能实现”的完整攻略。 准备工作 首先,需要准备一些基本的工具和环境,其中我们需要的主要有: 服务器环境(需要支持 PHP 和 MySQL 两种技术) 数据库(我们需要在数据库中存放我们网站的信息) 编辑器(用于编写 PHP 代码) 如果您还没有搭建好服务器环境和数据库,可通过云服务提供商、自行搭建本地环境等多种方…

    PHP 2023年5月23日
    00
  • php eval函数用法 PHP中eval()函数小技巧

    下面是关于“php eval函数用法 PHP中eval()函数小技巧”的详细讲解攻略。 什么是eval()函数 eval()函数是PHP中的一个内置函数,用来执行一段包含PHP代码的字符串。它的基本用法是: eval($string); 其中,$string是一个包含PHP代码的字符串。eval()函数会将字符串里的代码解析、编译并执行。 eval()函数的…

    PHP 2023年5月27日
    00
  • 小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法第1/3页

    下面我将详细讲解“小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法第1/3页”的完整攻略。 产生原因 在MySQL、phpmyadmin和php中出现中文乱码的原因主要有两个:1. 字符集不一致:MySQL、phpmyadmin和php的字符集设置不一致,导致中文字符显示为乱码。2. 数据库、表或字段的字符集设置不正确:如…

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部