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 foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
详解php与ethereum客户端交互
Apr 28 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 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
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP内置加密函数详解
2016/11/20 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python如何使用字符打印照片
2020/01/03 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
演讲稿开场白
2014/01/13 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2014年政协工作总结
2014/12/09 职场文书
公司承诺书格式范文
2015/04/28 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python