Home  >  Article  >  Backend Development  >  PHP design pattern Visitor visitor pattern

PHP design pattern Visitor visitor pattern

高洛峰
高洛峰Original
2016-11-30 09:23:00883browse

Copy the code The code is as follows:

"; 
} 
public function visitCroncreteElementB($element) 
{ 
echo get_class($element)." visit 1B
"; } } class ConcreteVisitor2 extends Visitor { public function visitCroncreteElementA($element) { echo get_class($element)." visit 2A
"; } public function visitCroncreteElementB($element) { echo get_class($element)." visit 2B
"; } } abstract class Element { abstract public function accept($visitor); } class ConcreteElementA extends Element { public function accept($visitor) { $visitor->visitCroncreteElementA($this); } } class ConcreteElementB extends Element { public function accept($visitor) { $visitor->visitCroncreteElementB($this); } } class ObjectStructure { private $_elements = array(); public function attach($element) { $this->_elements[] = $element; } public function detach($element) { if($key = array_search($element,$this->_elements) !== false) unset($this->_elements[$key]); } public function accept($visitor) { foreach($this->_elements as $element) { $element->accept($visitor); } } } // $objOS = new ObjectStructure(); $objOS->attach(new ConcreteElementA()); $objOS->attach(new ConcreteElementB()); $objCV1 = new ConcreteVisitor1(); $objCV2 = new ConcreteVisitor2(); $objOS->accept($objCV1); $objOS->accept($objCV2);


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn