PHP デザイン パターンにおけるメディエーター パターンの詳細な分析_PHP チュートリアル
Mediator パターン、このパターンの目的は、オブジェクトのグループ間の相互作用をカプセル化し、オブジェクトが相互に干渉するのを防ぐことです。Mediator (メディエーター) は、Colleague オブジェクト (Colleague) 間の中間収束点として機能します。あるオブジェクトが別のオブジェクトを直接指すことを避けるために、同僚オブジェクトは疎結合である必要があります。メディエーター モードでは、オブジェクトの関係と依存関係が競合する場合、結合されたオブジェクト間のワークフローを調整するためにメディエーターを使用できます。依存関係は同僚からメディエーターへ、またはメディエーターから同僚へ両方向に確立できます。 AbstractColleague または AbstractMediator を使用します。
オブジェクトは孤立しているのではなく、タスクを完了するには相互に協力する必要があります。メディエーター パターンはオブジェクト間の対話を制限できますが、悪用すると集約クラスの作成が非常に困難になる可能性があります。実用的な例を挙げると、ドメイン駆動設計のサービスはエンティティ間の仲介者です。別の PHP 関連の例を挙げると、Zend_Form の装飾関数とフィルタリング関数は、実際には、Zend_Form_Decorator インスタンスと Zend_Filter インスタンスの間の単純な仲介者として見ることができます。どちらも検証に Zend_Validate オブジェクトを使用します。
メディエーターが同僚オブジェクトのイベントをリッスンする必要がある場合、通常、メディエーターはオブザーバーとして実装され、一部の同僚が書き込み、他の同僚が読み取る黒板オブジェクトを生成します。同僚からのイベントはメディエーターにプッシュされ、メディエーターはそれを他のサブスクライブした同僚に転送します。このアーキテクチャーは、Zend Framework とともにリリースされた Dojo JavaScript ライブラリーで正常に使用されます。このパターンのもう 1 つの利点は、オブジェクトへの変更が計算メソッドに含まれることです。これは、さまざまなメディエーターを構成することで実現できますが、関連するオブジェクトのインスタンス化は緩やかな操作となり、さまざまなコンテナーとファクトリー間の協力関係が分散化されます。 。
参加者:
◆同僚: ポイントはその責任であり、Mediator または AbstractMediator の 1 つの仲介者とのみ通信します。
◆メディエーター:複数の同僚(AbstractColleague)と協力して仕事をします。
◆AbstractMediator、AbstractColleague: これらのロールの実際の実装から切り離されたオプションのインターフェイス。複数の AbstractColleague ロールが存在する場合があります。
次のコードは、Zend_Form_Element 関数と同様のフォーム入力フィルタリング プロセスを実装します。
/**
* 抽象的な同僚。
*/
インターフェース Filter
{
public function filter($value);
}
/**
* 同僚。私たちは、実装段階
* で、同僚がチェーン内の次の同僚
* を知らないようにすることを決定し、仲介者に頼ってそれらを結び付けます。
* この選択により、フィルターの基本抽象クラス
* が回避されます。
* これは一例であることに注意してください:
* 責任の連鎖だけではなく、仲介者として
* を代替的に実装することもできます。
*/
class TrimFilter は Filter を実装します
{
public function filter($value)
{
return trim($value);
}
}
/** <br> * 同僚。 <br> */ <br> class NullFilter は Filter を実装します <br> { <br> public function filter($value) <br> { <br> return $value ? $値: ''; <br> } <br> } <br><br> /** <br> * 同僚。 <br> */ <br> class HtmlEntitiesFilter は Filter を実装します <br> { <br> public function filter($value) <br> { <br> return htmlentities($value); <br> } <br> }<br>
/** <br> * 調停者。 ConcreteColleagues <br> * からの参照を避けるため、インターフェースが必要になります。双方向チャネルの実装 <br> * は、Observer パターンの例として残しておきます。 <br> * このクラスの役割は、値と座標を保存することです <br> * 値に適用する必要がある場合に計算をフィルターします。 <br> * フィルタリングの責任は明らかに <br> * フィルタの実装である同僚の懸念事項です。 <br> */ <br> class InputElement <br> { <br> protected $_filters; <br> 保護された $_value; <br><br> public function addFilter(Filter $filter) <br> { <br> $this->_filters[] = $filter; <br> $this を返します。 <br> } <br><br> パブリック関数 setValue($value) <br> { <br> $this->_value = $this->_filter($value); <br> } <br><br> 保護関数 _filter($value) <br> { <br> foreach ($this->_filters as $filter) { <br> $value = $filter->filter($value); <br> } <br> $value を返します。 <br> } <br><br> public function getValue() <br> { <br> return $this->_value; <br> } <br> } <br><br> $input = new InputElement(); <br> $input->addFilter(new NullFilter()) <br> ->addFilter(new TrimFilter()) <br> ->addFilter(new HtmlEntitiesFilter()); <br> $input->setValue(' 見出しには <h1>-<h6> タグを使用する必要があります。'); <br> echo $input->getValue(), "n";<br>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
