国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php設計模式 Visitor 訪問者模式

2024-05-04 23:17:56
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


<?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);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望江县| 鄂托克前旗| 贵定县| 张掖市| 班戈县| 青阳县| 资中县| 吉木萨尔县| 商城县| 北辰区| 台中县| 镇雄县| 阿勒泰市| 磐安县| 台前县| 云梦县| 德庆县| 华亭县| 建宁县| 临泽县| 天镇县| 乐业县| 抚远县| 彰化市| 浮山县| 四会市| 昌宁县| 天柱县| 庆城县| 简阳市| 凤山市| 阳西县| 阜南县| 苏尼特左旗| 璧山县| 京山县| 府谷县| 赤城县| 石楼县| 建湖县| 嵊州市|