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

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

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

イテレーターパターンとは何ですか?

Iterator デザイン パターンは、あらゆるタイプの可算データをループまたは反復するための単一の標準インターフェイスを提供する特定のオブジェクトを構築するのに役立ちます。

イテレータ パターンの問題と解決策:

イテレータ デザイン パターンは、オブジェクトのスタイルを設定してデータや他のオブジェクトのコレクションを処理するのに役立ちます。 Iterator 設計パターンに基づいてクラスを作成する場合、これらのコレクションを管理するための統一された方法を提供するインターフェイスのセットも作成します。

場合によっては、データセットが非常に単純に見えることがあります。プログラマは変更を予期していない可能性があるため、コードを変更せず、イテレータを作成しないことを選択します。この状況は、データベースを呼び出すときによく発生します。この時点で、プログラマは MySQL クエリを作成し、単純な配列フェッチ コマンドを実行します。ただし、このような手続き的なアプローチをコード内に残しておくことは、最善の解決策ではありません。

MySQL 結果セットを処理するときに Iterator オブジェクトを作成する必要があります。より簡単なアプローチは、MySQL クエリをクラス コンストラクターに提供し、イテレータ オブジェクトのパブリック メソッドを呼び出して結果セットをループすることです。より複雑なイテレータの例には、イテレータに送信される追加のパラメータがある場合もあり、これらの条件に応じて、異なる MySQL クエリのセットを実行することが可能です。しかし、とにかく、外側のコード フローは、コレクション内の次の項目を取得するために、同じ面倒なパブリック メソッドを処理するだけです。

走査する必要がある可算データを扱う場合、最良の解決策はイテレータ パターンに基づいてオブジェクトを作成することです。

UML

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

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

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

1.MyObject は、可算コレクションに収集できる基本オブジェクトです。 MyObject には name という名前のプライベート文字列があり、特定のオブジェクトの一意性を表すために使用されます。パブリック メソッド getName() は、プライベート名を通じてオブジェクト名を取得するためのインターフェイスを提供します。

2.MyObjectCollection は、MyObject オブジェクトのコレクションを管理するクラスを表します。 MyObjects 配列は、これらのオブジェクトのコレクションを保持します。 getMyObjects() によって提供されるロジックは、コレクションを作成し、オブジェクトを MyObjects 配列に保存するために使用されます。

3.MyObjectCollectionIterator は、MyObjectCollection に格納されているオブジェクトを反復するためのインターフェイスを提供します。このクラスには 2 つのパブリック メソッドがあります。その中で、hasNext() メソッドを使用すると、呼び出し側プログラムは、MyObject の MyObjectCollection コレクションに他の項目があるかどうかを知ることができます。 getNext() メソッドは、MyObjectCollection の配列内の次の MyObject オブジェクトを返します。

使用例

この例は、foreach を使用する場合の反復子メソッドの呼び出しシーケンスを示しています。

りー

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

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