php设计模式 Visitor 访问者模式
2015-01-24信息快讯网
表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作
<?php
/**
* 访问者模式
*
* 表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作
*
*/
abstract class Visitor
{
abstract public function visitCroncreteElementA($element);
abstract public function visitCroncreteElementB($element);
}
class ConcreteVisitor1 extends Visitor
{
public function visitCroncreteElementA($element)
{
echo get_class($element)." visit 1A<br/>";
}
public function visitCroncreteElementB($element)
{
echo get_class($element)." visit 1B<br/>";
}
}
class ConcreteVisitor2 extends Visitor
{
public function visitCroncreteElementA($element)
{
echo get_class($element)." visit 2A<br/>";
}
public function visitCroncreteElementB($element)
{
echo get_class($element)." visit 2B<br/>";
}
}
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);
整理的一些实用WordPress后台MySQL操作命令
将博客园(cnblogs.com)数据导入到wordpress的代码
zend framework配置操作数据库实例分析
windows下zendframework项目环境搭建(通过命令行配置)
PHP学习笔记 IIS7下安装配置php环境
PHP去掉从word直接粘贴过来的没有用格式的函数
记录PHP错误日志 display_errors与log_errors的区别
PHP中数字检测is_numeric与ctype_digit的区别介绍
php中判断文件存在是用file_exists还是is_file的整理
PHP中file_exists与is_file,is_dir的区别介绍
PHP学习笔记之数组篇
php懒人函数 自动添加数据
从康盛产品(discuz)提取出来的模板类
php设计模式 Decorator(装饰模式)
php设计模式 Factory(工厂模式)
php设计模式 Mediator (中介者模式)
php whois查询API制作方法
php中使用Akismet防止垃圾评论的代码
php在页面中调用fckeditor编辑器的方法
IIS7.X配置PHP运行环境小结
rephactor 优秀的PHP的重构工具
php的list()的一步操作给一组变量进行赋值的使用
php visitFile()遍历指定文件夹函数