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 相关文章推荐
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
php 归并排序 数组交集
May 10 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
php实现点击可刷新验证码
Nov 07 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
php验证码生成器
May 24 PHP
PHP实现的敏感词过滤方法示例
Mar 06 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 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
JS实现滑动插件
2020/01/15 Javascript
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python三级菜单的实例
2017/09/13 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
优秀演讲稿范文
2013/12/29 职场文书
调解员先进事迹材料
2014/02/07 职场文书
应届生找工作求职信
2014/06/24 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
领导干部失职检讨书
2015/05/05 职场文书
大学副班长竞选稿
2015/11/21 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书