ホームページ  >  記事  >  バックエンド開発  >  PHP デザインモード コマンド (コマンドモード)

PHP デザインモード コマンド (コマンドモード)

高洛峰
高洛峰オリジナル
2016-11-30 09:52:35885ブラウズ

/**
* コマンド モード
*
* リクエストをオブジェクトとしてカプセル化し、さまざまなリクエストでクライアントをパラメータ化し、リクエストを除外またはログに記録し、キャンセル可能な操作をサポートすることができます
*/
インターフェースコマンド
{
public functionexecute(); 
}

クラス呼び出し者
{
private $_command = array(); 
パブリック関数 setCommand($command) {
$this->_command[] = $command; 
}

public functionexecuteCommand()
{
foreach($this->_command as $command)
{
$command->execute(); 
}
}

public function RemoveCommand($command)
{
$key = array_search($command, $this->_command); 
if($key !== false)
{
unset($this->_command[$key]); 
}
}
}

クラス Receiver
{
private $_name = null; 

パブリック関数 __construct($name) {
$this->_name = $name; 
}

public function action()
{
echo $this->_name." action
"; 
}

public function action1()
{
echo $this->_name." action1
"; 
}
}

クラス ConcreteCommand は、コマンド
{
private $_receiver; を実装します。 
パブリック関数 __construct($receiver)
{
$this->_receiver = $receiver; 
}

パブリック関数execute()
{
$this->_receiver->action(); 
}
}

クラス ConcreteCommand1 は、コマンド
{
private $_receiver; を実装します。 
パブリック関数 __construct($receiver)
{
$this->_receiver = $receiver; 
}

パブリック関数execute()
{
$this->_receiver->action1(); 
}
}

クラス ConcreteCommand2 は、コマンド
{
private $_receiver; を実装します。 
パブリック関数 __construct($receiver)
{
$this->_receiver = $receiver; 
}

パブリック関数execute()
{
$this->_receiver->action(); 
$this->_receiver->action1(); 
}
}


$objRecevier = new Receiver("No.1"); 
$objRecevier1 = 新しい受信者("No.2"); 
$objRecevier2 = 新しい受信者("No.3"); 

$objCommand = new ConcreteCommand($objRecevier); 
$objCommand1 = 新しい ConcreteCommand1($objRecevier); 
$objCommand2 = 新しい ConcreteCommand($objRecevier1); 
$objCommand3 = 新しい ConcreteCommand1($objRecevier1); 
$objCommand4 = 新しい ConcreteCommand2($objRecevier2); // Recevier の 2 つのメソッドを使用します

$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(); 
[/コード]

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。