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实现ping
Oct 09 PHP
php,ajax实现分页
Mar 27 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php gzip压缩输出的实现方法
Apr 27 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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/12/03 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
jquery随机展示头像代码
2011/12/21 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
python Shapely使用指南详解
2020/02/18 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Django 返回json数据的实现示例
2020/03/05 Python
python爬取天气数据的实例详解
2020/11/20 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
商场中秋节广播稿
2014/01/17 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2014年团委工作总结
2014/11/13 职场文书
后备干部推荐材料
2014/12/24 职场文书
督导岗位职责
2015/02/04 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
汉字听写大会观后感
2015/06/12 职场文书
单位更名证明
2015/06/18 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技