博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP设计模式(4)命令链模式
阅读量:6501 次
发布时间:2019-06-24

本文共 1162 字,大约阅读时间需要 3 分钟。

命令链 模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以,该请求被处理,进程停止。您可以为系统添加或移除处理程序,而不影响其他处理程序。

以下代码显示了此模式的一个示例。

_commands[] = $cmd;}//定义执行命令的方法public function runCommand($name,$args){foreach($this->_commands as $cmd) {if($cmd->onCommand($name,$args)){return;}}}}//定义一个添加用户的命令对象class UserCommand implements ICommand {public function onCommand($name,$args){if($name != 'addUser'){return false;}echo 'UserCommand run command addUser
';}}//定义一个发送邮件的命令对象class MailCommand implements ICommand {public function onCommand($name,$args){if($name != 'mail'){return false;}echo 'MailCommand run command mail
';}}//定义维护命令对象列表的类$commandChain = new CommandChain();//实例化命令对象$user = new UserCommand();$mail = new MailCommand();//添加命令对象到列表中$commandChain->addCommand($user);$commandChain->addCommand($mail);//执行命令$commandChain->runCommand('addUser',null);$commandChain->runCommand('mail',null);

此代码定义维护 ICommand 对象列表的 CommandChain 类。两个类都可以实现 ICommand 接口 —— 一个对邮件的请求作出响应,另一个对添加用户作出响应。

如果您运行包含某些测试代码的脚本,则会得到以下输出:

代码首先创建 CommandChain 对象,并为它添加两个命令对象的实例。然后运行两个命令以查看谁对这些命令作出了响应。如果命令的名称不匹配 UserCommand 或 MailCommand,则代码失败,不发生任何操作。

为处理请求而创建可扩展的架构时,命令链模式很有价值,使用它可以解决许多问题。

 

 

 

 

 

转载地址:http://irpyo.baihongyu.com/

你可能感兴趣的文章
java数据库生成model_继承BaseModelGenerator 生成Model时添加数据库表字段 生成代码示例...
查看>>
https redirects java_java HttpURLConnection 得到 Redirect 转向的例子
查看>>
java读取html文件并替换_java读取html并替换相关内容
查看>>
java面向对象的概念_java面向对象(上)-- 面向对象的概念
查看>>
dbscan算法python实现_Python实现DBScan
查看>>
java智能聊天软件_Java使用青云客智能聊天接口做一个小助手
查看>>
java定义player类_Java自定义一个异常类NoThisSongException和Player类
查看>>
java 字符串 算法 面试题_java笔试手写算法面试题大全含答案
查看>>
java内部类访问外部类变量 final_Java内部类引用外部类中的局部变量为什么必须是final问题解析...
查看>>
java编程思想第四章_《JAVA编程思想》学习笔记——第四章 控制执行流程
查看>>
换行符 html java_java 去html标签,去除字符串中的空格,回车,换行符,制表符
查看>>
java 栈帧与类的关系_深入理解Java虚拟机之类运行时栈帧结构
查看>>
java中什么是数据污染_静态数据成员既可以通过
查看>>
java安卓结束进程_Android应对Activity进程被杀死
查看>>
php 中set是什么_PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
查看>>
php验证码安装代码_php实现的验证码小程序代码分享
查看>>
php中删除评论怎么做的,详解PHP如何实现评论回复删除功能
查看>>
macports 安装php,「macports」MacOS 中 MacPorts 安装和使用 - 金橙教程网
查看>>
php的联查,thinkPHP联表查询的示例分析
查看>>
php cgi nginx,cgi、fastcgi、php-fpm、nginx的个人理解。
查看>>