php设计模式之命令模式使用示例


Posted in PHP onMarch 02, 2014

命令类:
1.命令角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。
2.具体命令角色:定义一个接受者和行为之间的弱耦合;实现execute方法,负责调用接受的相应操作。execute()方法通常叫做执行方法
3.客户角色:创建一个具体命令对象并确定其接受者。
4.请求者角色:负责调用命令对象执行请求,相关的方法叫做行动方法。
5.接受者角色:负责具体实施和执行一个请求。
作用:
1.抽象出待执行的动作以参数化对象。
2.在不同的时刻指定、排列和执行请求。
3.支持取消操作
4.支持修改日志

<?php
//命令接口
interface Command{
     public function execute();
}
//具体命令
class ConcreteCommand implements Command{
     private $_receiver;
     public function __construct($receiver){
          $this->_receiver = $receiver;
     }
     public function execute(){
          $this->_receiver->action();
     }
}//接受者
class Receiver{
     private $_name;
     public function __construct($name){
          $this->_name = $name;
     }
     //行动方法
     public function action(){
          echo $this->_name.'do action .<br/>';
     }
}
//请求者
class Invoker{
     private $_command;
     public function __construct($command){
          $this->_command = $command;
     }
     public function action(){
          $this->_command->execute();
     }
}
//客户端
class  Client{
     public static function main(){
          $receiver = new Receiver('jaky');
          $command = new ConcreteeCommand($receiver);
          $invoker = new Invoker($command);
          $invoker->action();
     }
}
Client::main();
?>
PHP 相关文章推荐
图形数字验证代码
Oct 09 PHP
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP构造二叉树算法示例
Jun 21 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
php接口和抽象类使用示例详解
Mar 02 #PHP
php通过字符串调用函数示例
Mar 02 #PHP
php多维数组去掉重复值示例分享
Mar 02 #PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 #PHP
PHP 字符串长度判断效率更高的方法
Mar 02 #PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
You might like
PHP的变量总结 新手推荐
2011/04/18 PHP
php限制文件下载速度的代码
2015/10/20 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
菜单效果
2006/10/14 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
关于责任的演讲稿
2014/05/20 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
服务明星事迹材料
2014/12/29 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
nginx容器方式反向代理实战
2022/04/18 Servers
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android