ホームページ > php教程 > php手册 > PHP デザインパターン 訪問者 訪問者パターン

PHP デザインパターン 訪問者 訪問者パターン

WBOY
リリース: 2016-06-13 12:07:53
オリジナル
871 人が閲覧しました

复制代 代码如下:


/**
* Visitor pattern
*
* オブジェクト構造内の各要素に作用する操作を表します。各要素のクラスを変更せずに、これらの要素に作用する新しい操作を定義できます。
*
*/
抽象クラス Visitor
{
抽象パブリック関数 visitCroncreteElementA($element);
抽象パブリック関数 visitCroncreteElementB($element);
}
class ConcreteVisitor1 extends Visitor
{
public function visitCroncreteElementA($element)
{
echo get_class($element)." visit 1A
";
}
public function visitCroncreteElementB($element)
{
echo get_class($element)." visit 1B
";
}
}
class ConcreteVisitor2 は Visitor
{
public function visitCroncreteElementA($element)
{
echo get_class($element) を拡張します。" visit 2A
;";
}
public function visitCroncreteElementB($element)
{
echo get_class($element)." visit 2B
";
}
}
抽象クラス要素
{
抽象パブリック関数 accept($visitor);
}
class ConcreteElementA は要素
{
public function accept($visitor)
{
$visitor->visitCroncreteElementA($this); を拡張します。
}
}
class ConcreteElementB extends Element
{
public function accept($visitor)
{
$visitor->visitCroncreteElementB($this);
}
}
クラス ObjectStructure
{
private $_elements = array();
パブリック関数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 = 新しい ConcreteVisitor1();
$objCV2 = 新しい ConcreteVisitor2();
$objOS->accept($objCV1);
$objOS->accept($objCV2);

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート