ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクト指向の高度な設計パターン: インタプリタ パターンの使用例

PHP オブジェクト指向の高度な設計パターン: インタプリタ パターンの使用例

巴扎黑
リリース: 2023-03-07 20:40:01
オリジナル
1711 人が閲覧しました

通訳モードとは何ですか?

インタプリタ設計パターンは、エンティティの主要な要素を分析し、各要素に独自の説明や対応するアクションを提供するために使用されます。


インタープリター パターンの問題と解決策

インタープリター デザイン パターンは、私たちが頻繁に使用しているにもかかわらず、気づいていない数少ない一般的なデザイン パターンの 1 つです。この設計パターンはクラスの作成に限定されません。ほとんどのプログラミング アルゴリズムを作成するプロセスでは、インタープリター設計パターンの基本概念が使用されます。

インタープリターの設計パターンがどのように機能するかを理解するために、マクロ言語の処理を例に挙げてみましょう。各マクロに対して記述されたコマンドは、それ自体がさらに多くのコマンドの集合です。簡素化されたマクロ言語により、プログラマは他のシステム コマンドの構文を考慮することなく、作成操作を簡単に完了できます。これにより、プログラマがシステム コマンドに直接アクセスできない場合のセキュリティも向上します。代わりに、プログラマはラッパー メソッドを作成して、ある種のサンドボックス内でシステム コマンドを実行します。赤の言語は解釈され、実行される一連のコマンドに変換されます。

テンプレート システムを見ることで、インタープリターの設計パターンを認識することもできます。特定の事前定義されたキーワードまたは記号は、他のものを表すために定義されます。テンプレート プロセッサは、コードを受け入れ、各キーワードを解釈して特定の命令セットを参照し、コードを実行するために使用されます。

インタープリター設計パターンに基づいてシステムを構築すると、サードパーティまたはユーザーは、システムによって提供されるデータをより柔軟に表現および取得できるようになります。事前定義されたメソッド名または特定の定数によって取得するデータのタイプを示す代わりに、キーワードを使用してこのデータを取得します。


UML

この図は、インタープリター設計パターンを使用したクラス設計を詳しく示しています。

PHP オブジェクト指向の高度な設計パターン: インタプリタ パターンの使用例

以下は上の図の説明です:

1. MyObject クラスは説明が必要なコンテンツを処理します。これには、処理が必要なコンテンツを保存するプライベート文字列コンテンツがあります。

2. storeContent() メソッドは、content という名前のパラメータを受け取り、処理内容を事前に解釈し、結果を MyObject オブジェクト内に保存します。

3. applyInterpretation() メソッドが呼び出されます。このメソッドは、MyInterpreter クラスのインスタンスを作成します。 MyInterpreter には、interpreteKeys() という名前のパブリック メソッドがあり、このメソッドはパラメータ content.applyInterpretation() を受け取り、パラメータの内部コンテンツを取得します。 MyInterpreter クラスは、処理対象のコンテンツの解釈を実行し、結果を MyObject に返します。次に、applyInterpretation() メソッドは内部コンテンツ変数を置き換えます。

4. 最後に、MyObject は getContent() メソッドを通じて解釈されたコンテンツを提供します。

使用例

文法的再帰のコード部分は、特定の状況に応じて実装する必要があるため、コードには反映されません。抽象式は文法セットを生成するための鍵です。各非終端式は最小の文法単位を解釈し、これらの文法単位を再帰的に組み合わせて完全な文法を作成します。これがインタープリター モードです。

りー

以上がPHP オブジェクト指向の高度な設計パターン: インタプリタ パターンの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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