• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php设计模式 Visitor 访问者模式_php技巧

php 搞代码 4年前 (2022-01-26) 36次浏览 已收录 0个评论
<?php <BR>/** <BR>* 访问者模式 <BR>* <BR>* 表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作 <BR>* <BR>*/ <BR>abstract class Visitor <BR>{ <BR>abstract public function visitCroncreteElementA($element); <BR>abstract public function visitCroncreteElementB($element); <BR>} <BR>class ConcreteVisitor1 extends Visitor <BR>{ <BR>public function visitCroncreteElementA($element) <BR>{ <BR>echo get_class($element)." visit 1A<br />"; <BR>} <BR>public function visitCroncreteElementB($element) <BR>{ <BR>echo get_class($element)." visit 1B<br />"; <BR>} <BR>} <BR>class ConcreteVisitor2 extends Visitor <BR>{ <BR>public function visitCroncreteElementA($element) <BR>{ <BR>echo get_class($element)." visit 2A<br />"; <BR>} <BR>public function visitCroncreteElementB($element) <BR>{ <BR>echo get_class($element)." visit 2B<br />"; <BR>} <BR>} <BR>abstract class Element <BR>{ <BR>abstract public function accept($visitor); <BR>} <BR>class ConcreteElementA extends Element <BR>{ <BR>public function accept($visitor) <BR>{ <BR>$visitor->visitCroncreteElementA($this); <BR>} <BR>} <BR>class ConcreteElementB extends Element <BR>{ <BR>public function accept($visitor) <BR>{ <BR>$visitor->visitCroncreteElementB($this); <BR>} <BR>} <BR>class ObjectStructure <BR>{ <BR>private $_elements = array(); <BR>public function attach($element) <BR>{ <BR>$this->_elements[] = $element; <BR>} <BR>public function detach($element) <BR>{ <BR>if($key = array_search($element,$this->_elements) !== false) unset($this->_elements[$key]); <BR>} <BR>public function accept($visitor) <BR>{ <BR>foreach($this->_elements as $element) <BR>{ <BR>$element->accept($visitor); <BR>} <BR>} <BR>} <BR>// <BR>$objOS = new ObjectStructure(); <BR>$objOS->attach(new ConcreteElementA()<strong>)本文来(源gaodai#ma#com搞@@代~&码*网2</strong><pre>搞代gaodaima码

);
$objOS->attach(new ConcreteElementB());
$objCV1 = new ConcreteVisitor1();
$objCV2 = new ConcreteVisitor2();
$objOS->accept($objCV1);
$objOS->accept($objCV2);


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php设计模式 Visitor 访问者模式_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址