手机
当前位置:查字典教程网 >编程开发 >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开发的9条经验总结

php遍历CSV类实例

php常见的页面跳转方法汇总

ip签名探针

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

配置最新的PHP加MYSQL服务器

学习php设计模式 php实现命令模式(command)

PHP设计聊天室步步通

提问的智慧

Yii获取当前url和域名的方法

精品推荐
分类导航