>  기사  >  백엔드 개발  >  PHP 디자인 모드 명령(명령 모드)

PHP 디자인 모드 명령(명령 모드)

高洛峰
高洛峰원래의
2016-11-30 09:52:35912검색

/**
* 명령 모드
*
* 요청을 객체로 캡슐화하여 다양한 요청으로 클라이언트를 매개변수화하고, 요청을 제외하거나 기록하며, 취소 가능한 작업을 지원할 수 있습니다.
*/ 
인터페이스 명령 

공개 함수 실행(); 


클래스 호출자 

private $_command = array(); 
공용 함수 setCommand($command) { 
$this->_command[] = $command; 


공용 함수 excuteCommand() 

foreach($this->_command as $command) 

$command->execute(); 



공개 함수 RemoveCommand($command) 

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

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




class Receiver 

private $_name = null; 

공개 함수 __construct($name) { 
$this->_name = $name; 


공개 함수 action() 

echo $this->_name." action
"; 


공개 함수 action1() 

echo $this->_name." action1
"; 



class ConcreteCommand는 명령을 구현합니다.

private $_receiver; 
공개 함수 __construct($receiver) 

$this->_receiver = $receiver; 


공개 함수 실행() 

$this->_receiver->action(); 



class ConcreteCommand1은 명령을 구현합니다.

private $_receiver; 
공개 함수 __construct($receiver) 

$this->_receiver = $receiver; 


공개 함수 실행() 

$this->_receiver->action1(); 



class ConcreteCommand2는 명령을 구현합니다.

private $_receiver; 
공개 함수 __construct($receiver) 

$this->_receiver = $receiver; 


공개 함수 실행() 

$this->_receiver->action(); 
$this->_receiver->action1(); 




$objRecevier = new Receiver("No.1"); 
$objRecevier1 = 새 수신자("2번"); 
$objRecevier2 = 새 수신자("3번"); 

$objCommand = new ConcreteCommand($objRecevier); 
$objCommand1 = 새로운 ConcreteCommand1($objRecevier); 
$objCommand2 = 새로운 ConcreteCommand($objRecevier1); 
$objCommand3 = 새로운 ConcreteCommand1($objRecevier1); 
$objCommand4 = 새로운 ConcreteCommand2($objRecevier2); // 수신자 사용 방법 

$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으로 문의하세요.