浅谈PHP设计模式的命令模式

yizhihongxing

简介:

命令模式,又称之为动作模式或者事务模式,属于行为型的设计模式。
将不同的请求封装成不同的请求对象,以便使用不同的请求;
角色都会用饭馆来举例子:
命令下达者:顾客
命令接受者:服务员
命令本身: 菜单
命令执行者:厨师

适用场景:

  1. Laravel的事件调度机制有用到了命令模式。
  2. 想要解耦服务端和调用端的时候。

优点:

  1. 当去修改命令的时候,直接与命令接受者进行通信,实现了客户端的命令发起与服务端命令执行者的解耦。
  2. 扩展性好,增加新的命令,既不会影响调用端,也方便服务端的扩展。

缺点:

增加类的数量进而增加复杂度。

代码:

//命令角色的抽象接口
interface CommandInterface {
    public function execute();
}

//命令角色(类似于菜单)
class PrintCommand implements CommandInterface {
    private $receiver;

    public function __construct(Receiver $receiver) {
        $this->receiver = $receiver;
    }

    public function execute() {
        $this->receiver->exec('Hello World');
    }
}



//执行者(类似于初始)
class Receiver {
    public function exec(string $str) {
        echo $str;
    }
}


//命令接受者(类似于服务员)
class Invoker {
    private $command;

    public function setCommand(CommandInterface $cmd) {
        $this->command = $cmd;
    }

    public function run() {
        $this->command->execute();
    }
}



//调用端==========================================================
$receiver = new Receiver();
$invoker = new Invoker();
$invoker->setCommand(new PrintCommand($receiver));
$invoker->run();

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

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

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

相关文章

  • 搭建Vim为自定义的PHP开发工具的一些技巧

    以下是搭建 Vim 为自定义的 PHP 开发工具的完整攻略。 环境要求 在进行 Vim 开发环境搭建之前,需要确保已经在本地安装了以下软件: Git Vim PHP ctags 安装 Vim 插件管理器 安装插件管理器可以方便我们对 Vim 插件进行管理和升级,推荐使用 Vim-Plug 进行安装,可以通过以下命令进行安装: curl -fLo ~/.vim…

    PHP 2023年5月27日
    00
  • php中正则表达式中的特殊符号

    正则表达式是PHP中常用的一种文本匹配工具,其中有许多特殊符号常用于表达特定含义,下面我将详细讲解正则表达式中的特殊符号以及它们的用法。 1. 元字符 元字符代表正则表达式中的特殊字符,可以用来匹配特定的字符串片段。 1.1 数字、字母和下划线 在正则表达式中,使用“\d”表示匹配任意一个数字,“\w”表示匹配任意一个字母或数字,“\s”代表一个空白字符。 …

    PHP 2023年5月26日
    00
  • PHP目录函数实现创建、读取目录教程实例

    当我们通过PHP编写代码时,需要经常操作目录,比如创建、删除、读取目录等。PHP内置了一些函数来实现目录操作,本文将通过实例演示PHP目录函数的使用。 创建目录 如果需要在PHP中创建目录,可以使用mkdir()函数。创建目录的基本语法如下: mkdir ( string $pathname , int $mode = 0777 , bool $recurs…

    PHP 2023年5月27日
    00
  • PHP匹配连续的数字或字母的正则表达式

    要匹配连续的数字或字母,可以使用正则表达式中的元字符(metacharacter)来进行匹配。常用的元字符有.、*、+、?、|等,而用来匹配数字或字母的元字符有\d和\w。 使用\d+匹配连续的数字 \d用来匹配数字,\d+则表示匹配一个或多个数字(即连续的数字)。下面是一个例子,展示了如何使用\d+来匹配字符串中的连续数字: <?php $str =…

    PHP 2023年5月26日
    00
  • php 数组处理函数extract详解及实例代码

    PHP中,数组是一种非常重要的数据类型,它可以存储大量数据并进行各种操作。PHP内置了许多用于处理数组的函数,其中一个比较有用的函数是extract()。本文将详细讲解extract函数的用法及实例代码。 什么是extract函数 extract是PHP内置的一个数组处理函数,用于将数组中的元素转换为独立的变量。它的原型如下: extract(array $…

    PHP 2023年5月26日
    00
  • PHP pthreads v3下同步处理synchronized用法示例

    关于“PHP pthreads v3下同步处理synchronized用法示例”的攻略,我来说明一下。 1. 什么是PHP pthreads? PHP pthreads 是 PHP 的多线程扩展库,它使用的是基于 POSIX 线程的标准模型实现的多线程,提供了一些类和方法以便进行并发编程。PHP pthreads 的主要特点是可以实现多线程并发处理,简化程序…

    PHP 2023年5月27日
    00
  • php魔术函数__call()用法实例分析

    PHP魔术函数__call()用法实例分析 什么是__call()函数 __call()是PHP中的魔术函数(Magic Method),是在调用一个不存在或不可访问的类方法时,PHP自动调用的一个特殊函数。它允许在运行时动态调用一个不存在的或不可访问的方法。开发人员可以使用这个函数在访问一个不存在的方法时自定义一些操作。 __call()函数的使用 __c…

    PHP 2023年5月26日
    00
  • 简单的PHP缓存设计实现代码

    下面是详细的“简单的PHP缓存设计实现代码”的完整攻略。 缓存的定义及作用 缓存是一种提高访问速度的技术,它通过将数据保存在系统中,使得后续访问同样的数据时,可以直接从缓存中获取,而无需再次去请求原始数据,从而提高访问速度。 在网站开发中,缓存的应用非常广泛,可以用于缓存查询结果、模板缓存、静态资源等等。对于一些访问频率较高,但是数据又不会频繁更新的内容,使…

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