学习php设计模式 php实现命令模式(command)
《:学习php设计模式 php实现命令模式(command)》要点: PHP编程一、意图 PHP编程 PHP编程三、命令模式中主要角色 PHP编程
<?php
/**
* 命令角色
*/
interface Command {
/**
* 执行方法
*/
public function execute();
}
/**
* 具体命令角色
*/
class ConcreteCommand implements Command {
private $_receiver;
public function __construct(Receiver $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 $command) {
$this->_command = $command;
}
public function action() {
$this->_command->execute();
}
}
/**
* 客户端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$receiver = new Receiver('phpppan');
$command = new ConcreteCommand($receiver);
$invoker = new Invoker($command);
$invoker->action();
}
}
Client::main();
?>
PHP编程 PHP编程
<?php
/**
* 命令角色
*/
interface Command {
/**
* 执行方法
*/
public function execute();
}
/**
* 宏命令接口
*/
interface MacroCommand extends Command {
/**
* 宏命令聚集的管理方法,可以删除一个成员命令
* @param Command $command
*/
public function remove(Command $command);
/**
* 宏命令聚集的管理方法,可以增加一个成员命令
* @param Command $command
*/
public function add(Command $command);
}
class DemoMacroCommand implements MacroCommand {
private $_commandList;
public function __construct() {
$this->_commandList = array();
}
public function remove(Command $command) {
$key = array_search($command,$this->_commandList);
if ($key === FALSE) {
return FALSE;
}
unset($this->_commandList[$key]);
return TRUE;
}
public function add(Command $command) {
return array_push($this->_commandList,$command);
}
public function execute() {
foreach ($this->_commandList as $command) {
$command->execute();
}
}
}
/**
* 具体拷贝命令角色
*/
class CopyCommand implements Command {
private $_receiver;
public function __construct(Receiver $receiver) {
$this->_receiver = $receiver;
}
/**
* 执行方法
*/
public function execute() {
$this->_receiver->copy();
}
}
/**
* 具体拷贝命令角色
*/
class PasteCommand implements Command {
private $_receiver;
public function __construct(Receiver $receiver) {
$this->_receiver = $receiver;
}
/**
* 执行方法
*/
public function execute() {
$this->_receiver->paste();
}
}
/**
* 接收者角色
*/
class Receiver {
/* 接收者名称 */
private $_name;
public function __construct($name) {
$this->_name = $name;
}
/**
* 复制方法
*/
public function copy() {
echo $this->_name,' do copy action.<br />';
}
/**
* 粘贴方法
*/
public function paste() {
echo $this->_name,' do paste action.<br />';
}
}
/**
* 哀求者角色
*/
class Invoker {
private $_command;
public function __construct(Command $command) {
$this->_command = $command;
}
public function action() {
$this->_command->execute();
}
}
/**
* 客户端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$receiver = new Receiver('phpppan');
$pasteCommand = new PasteCommand($receiver);
$copyCommand = new CopyCommand($receiver);
$macroCommand = new DemoMacroCommand();
$macroCommand->add($copyCommand);
$macroCommand->add($pasteCommand);
$invoker = new Invoker($macroCommand);
$invoker->action();
$macroCommand->remove($copyCommand);
$invoker = new Invoker($macroCommand);
$invoker->action();
}
}
Client::main();
?>
PHP编程以上就是使用php实现命令模式的代码,还有一些关于命令模式的概念区分,希望对大家的学习有所帮助. 欢迎参与《:学习php设计模式 php实现命令模式(command)》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |