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 相关文章推荐
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
CI框架中zip类应用示例
Jun 17 PHP
如何让CI框架支持service层
Oct 29 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
docker-compose部署php项目实例详解
Jul 30 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
推荐一篇入门级的Class文章
2007/03/19 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
js控制框架刷新
2008/08/01 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
python实现计算倒数的方法
2015/07/11 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python 使用多属性来进行排序
2019/09/01 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
教师自我鉴定
2013/12/13 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技