Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Designmodus-Befehl (Befehlsmodus)

PHP-Designmodus-Befehl (Befehlsmodus)

高洛峰
高洛峰Original
2016-11-30 09:52:35910Durchsuche

/**
* Befehlsmodus
*
* Kapselt eine Anfrage als Objekt, sodass Sie Clients mit unterschiedlichen Anfragen parametrisieren, Anfragen ausschließen oder protokollieren und abbrechbare Vorgänge unterstützen können
*/ 
interface Command 

public functionexecute(); 


class Invoker 

private $_command = array(); 
öffentliche Funktion setCommand($command) { 
$this->_command[] = $command; 


öffentliche FunktionexecuteCommand() 

foreach($this->_command as $command) 

$command->execute(); 



öffentliche Funktion removeCommand($command) 

$key = array_search($command, $this->_command); 
if($key !== false) 

unset($this->_command[$key]); 




class Receiver 

private $_name = null; 

öffentliche Funktion __construct($name) { 
$this->_name = $name; 


public function action() 

echo $this->_name." action
"; 


öffentliche Funktion action1() 

echo $this->_name." action1
"; 



class ConcreteCommand implementiert Command 

private $_receiver; 
öffentliche Funktion __construct($receiver) 

$this->_receiver = $receiver; 


öffentliche Funktionexecute() 

$this->_receiver->action(); 



class ConcreteCommand1 implementiert Command 

private $_receiver; 
öffentliche Funktion __construct($receiver) 

$this->_receiver = $receiver; 


öffentliche Funktionexecute() 

$this->_receiver->action1(); 



class ConcreteCommand2 implementiert Command 

private $_receiver; 
öffentliche Funktion __construct($receiver) 

$this->_receiver = $receiver; 


öffentliche Funktionexecute() 

$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(); 
[/code]

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn