php設計模式 Visitor 訪問者模式
更新時間:2011年06月28日 20:57:17 作者:
表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,可以在不改變各元素的類的前提下定義作用于這些元素的新操作
復制代碼 代碼如下:
<?php
/**
* 訪問者模式
*
* 表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,可以在不改變各元素的類的前提下定義作用于這些元素的新操作
*
*/
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);
相關(guān)文章
關(guān)于session在PHP5的配置文件中的詳細設置參數(shù)說明
關(guān)于session在PHP5的配置文件中的詳細設置參數(shù)說明,需要的朋友可以參考下。2011-04-04
使用php實現(xiàn)網(wǎng)站驗證碼功能【推薦】
本文主要介紹了使用php實現(xiàn)網(wǎng)站驗證碼功能的方法。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02
php中用socket模擬http中post或者get提交數(shù)據(jù)的示例代碼
以下是對php中用socket模擬http中post或者get提交數(shù)據(jù)的示例代碼進行了介紹,需要的朋友可以過來參考下2013-08-08
asp和php下textarea提交大量數(shù)據(jù)發(fā)生丟失的解決方法
2008-01-01
php使用str_shuffle()函數(shù)生成隨機字符串的方法分析
這篇文章主要介紹了php使用str_shuffle()函數(shù)生成隨機字符串的方法,結(jié)合兩個簡單實例形式分析了基于str_shuffle()函數(shù)的隨機打亂字符串順序功能實現(xiàn)隨機字符串的相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
PHP實現(xiàn)的創(chuàng)建帶logo圖標二維碼生成類詳解
這篇文章主要介紹了PHP實現(xiàn)的創(chuàng)建帶logo圖標二維碼生成類,結(jié)合實例形式分析了可生成帶logo的二維碼工具類PHPQRCode.class.php相關(guān)參數(shù)、功能與使用技巧,需要的朋友可以參考下2018-07-07

