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 5.5 新特性
Jul 02 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
PHP邮箱验证示例教程
Jun 01 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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猴子选大王问题解决方法
2015/05/12 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
php中序列化与反序列化详解
2017/02/13 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
python非递归全排列实现方法
2017/04/10 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
高性能装备提升营地:Kammok
2019/02/27 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
软件测试面试题
2015/10/21 面试题
做一个有道德的人演讲稿
2014/05/14 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
服务理念标语
2014/06/18 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
学年个人总结范文
2015/03/05 职场文书
中学教师读书笔记
2015/07/01 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript