手机
当前位置:查字典教程网 >编程开发 >php教程 >php设计模式 Command(命令模式)
php设计模式 Command(命令模式)
摘要:复制代码代码如下:

复制代码 代码如下:

<?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); // 使用 Recevier的两个方法

$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();

【php设计模式 Command(命令模式)】相关文章:

php设计模式 Command(命令模式)

PHP二进制与字符串之间的相互转换

PHP 高手之路(二)

聊天室php&mysql(四)

提问的智慧

php中smarty模板条件判断用法实例

用定制的PHP应用程序来获取Web服务器的状态信息

图象函数中的中文显示

php三元运算符知识汇总

PHP设计模式之适配器模式代码实例

精品推荐
分类导航