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
PHP静态类
Nov 25 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
解析MySql与Java的时间类型
Jun 22 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
thinkphp实现附件上传功能
May 26 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP实现网站应用微信登录功能详解
Apr 11 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抓取页面的几种方法详解
2013/06/17 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python得到单词模式的示例
2018/10/15 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
女方婚礼新郎答谢词
2014/01/11 职场文书
音乐教育感言
2014/03/05 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
信用卡工作证明模板
2014/09/14 职场文书
军人离婚协议书样本
2014/10/21 职场文书
碧霞祠导游词
2015/02/09 职场文书
不同意离婚答辩状
2015/05/22 职场文书