命令模式
来源:互联网 发布:西安网络营销策划公司 编辑:程序博客网 时间:2024/06/05 02:39
命令模式
<?php/** * 命令模式 * * 将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化,对 请求排除或记录请求日志,以及支持可取消的操作 */interface Command { public function execute();}class Invoker { private $_command = array(); public function setCommand($command) { $this->_command[] = $command; } public function executeCommand() { foreach ($this->_command as $command) { $command->execute(); } } public function removeCommand($command) { $key = array_search($command, $this->_command); if ($key !== false) { unset($this->_command[$key]); } }}class Receiver { private $_name = null; public function __construct($name) { $this->_name = $name; } public function action() { echo $this->_name . " action<br/>"; } public function action1() { echo $this->_name . " action1<br/>"; }}class ConcreteCommand implements Command { private $_receiver; public function __construct($receiver) { $this->_receiver = $receiver; } public function execute() { $this->_receiver->action(); }}class ConcreteCommand1 implements Command { private $_receiver; public function __construct($receiver) { $this->_receiver = $receiver; } public function execute() { $this->_receiver->action1(); }}class ConcreteCommand2 implements Command { private $_receiver; public function __construct($receiver) { $this->_receiver = $receiver; } public function execute() { $this->_receiver->action(); $this->_receiver->action1(); }}$objRecevier = new Receiver("No.1");$objRecevier1 = new Receiver("No.2");$objRecevier2 = new Receiver("No.3");$objCommand = new ConcreteCommand($objRecevier);$objCommand1 = new ConcreteCommand1($objRecevier);$objCommand2 = new ConcreteCommand($objRecevier1);$objCommand3 = new ConcreteCommand1($objRecevier1);$objCommand4 = new ConcreteCommand2($objRecevier2); // 使用$ecevier 的 两个方法 $objInvoker = new Invoker();$objInvoker->setCommand($objCommand);$objInvoker->setCommand($objCommand1);$objInvoker->executeCommand();$objInvoker->removeCommand($objCommand1);$objInvoker->executeCommand();$objInvoker->setCommand($objCommand2);$objInvoker->setCommand($objCommand3);$objInvoker->setCommand($objCommand4);$objInvoker->executeCommand();?>
0 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- php逐个汉字遍历字符串
- 消息推送概述
- 读韩都衣舍,浅谈激励
- 使用WakeLock使Android应用程序保持后台唤醒
- VPN服务器配置详解(二)
- 命令模式
- [Wiki]Ubuntu16.04+CUDA8.0编译Caffe过程
- 1-4-3代码实例(顺时针div环绕)
- LeetCode之计算字符串相似度或编辑距离EditDistance
- 混淆、android应用提高反编译难度
- 《大型网站技术架构》读书笔记二
- javadoc生成doc文件时报编码错误的解决
- IO流列出目录下所有内容,带层次
- response响应给客户端(json、xml格式)