复制代 代码如下:
/**
* 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);

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
