監視対象ユーザー・リストとユーザー・リスト・イベント・ロガークリックして大きなイメージを見るこれをコマンドラインで実行すると、以下のような出力になります。オブザーバーを追加します。ロガーが実行する内容を認識しないということです。以上のリスナーが存在する場合もあります。新しいユーザーにシステムへの参加を歓迎するメッセージを送信するオブザーバーを持つことができます。依存するオブジェクトすべてを意識することなく、ジョブに専念できるということ、つまりユーザー・リストを保守し、リストが変更されたときにメッセージを送信できるということにあります。このパターンはメモリー内のオブジェクトに限ったものではなく、大規模なアプリケーションで使用されるデータベース駆動型メッセージ・キューイング・システムの基盤となります。コマンド・チェーン・パターン疎結合をテーマとして構築されたコマンド・チェーン・パターンは、メッセージ、コマンド、要求、あるいは必要なすべてのものを一連のハンドラーによってルーティングします。各ハンドラーは、要求を処理できるかどうかを自己決定します。処理できる場合、要求は処理され、プロセスが停止します。システムに対するハンドラーの追加や削除は、他のハンドラーに影響を与えずに行うことができます。このパターンの例を示します。クラスを定義しています。ユーザーの追加に応答します。コマンド・チェーンと関連コマンドクリックして大きなイメージを見るテスト・コードが含まれるこのスクリプトを実行すると、以下のような出力になります。つのコマンド・オブジェクトのインスタンスを追加します。次に、2つのコマンドを実行して、何がこれらのコマンドに応答するかを調べます。いずれかと一致すると、コードは無視され、何も起こりません。コマンド・チェーン・パターンは、要求を処理するために拡張可能なアーキテクチャーを作成する場合に重宝し、多くの問題を対処することができます。ストラテジー・パターン最後に紹介するデザイン・パターンはストラテジー・パターンです。このパターンでは、複雑なクラスからアルゴリズムを抽出し、アルゴリズムを簡単に交換できるようにします。ストラテジー・パターンは例えば、検索エンジンでのページのランク付け方法を変更する場合に選択できます。検索エンジンについて、次のようないくつかのパーツに分けて考えてみましょう。すべてのページで繰り返すパーツ、各ページをランク付けするパーツ、そしてランクに基づいて結果を並べるパーツです。複雑な例では、これらのパーツのクラスはすべて同じになってしまうでしょう。ストラテジー・パターンを使えば、ランク付けの部分を取り出して別のクラスにすることができるため、検索エンジン・コードの残りの部分に影響を与えることなく、ページのランク付け方法を変更することができます。ユーザー・リスト・クラスを示します。このクラスは、ストラテジーのプラグ・アンド・プレイ・セットに基づいてユーザーを検索するメソッドを提供するものです。クラスは、名前配列のラッパーです。メソッドを実装します。インターフェースで定義されます。このインターフェースには、2つの実装があります。指定された名前の後にあるすべての名前を選択します。このテスト・コードを実行すると、以下のような出力になります。つのストラテジーに対して同じユーザー・リストを実行した結果を示します。最初のストラテジーでは、Jから後にソートされるすべての名前を検索します。その結果、Jack、Lori、Meganが検出されます。次のストラテジーでは名前を無作為に選択するため、結果は毎回違うものになります。ストラテジー・パターンは、データのフィルタリング、検索、あるいは処理方法に高い柔軟性が要求される、複雑なデータ管理システムやデータ処理システムに最適なパターンです。アプリケーションで最も一般的に使わされるデザイン・パターンのうちのいくつかを紹介しました。『DesignPatterns』には、それ以外にも多くのパターンが紹介されています。アーキテクチャーが持つ難解な雰囲気に押し流されないでください。あなたには、どんなプログラミング言語でも、どんな技術レベルでも使うことが6++できるパターンという素晴らしいアイデアがあります。デザイン・パターンについての優れた記事が記載されています。オブザーバー、シングルトンなどのデザイン・パターンに関する優れた情報源になります。Patterns』は、すべてのエンジニアの必読本です。Patterns』は、デザイン・パターンの手軽な入門書です。Hacks』には、この記事で紹介した例より一層高度なデザイン・パターンについての解説が記載されています。プロジェクト・リソースにアクセスして、PHPの詳細を学んでください。ゾーンにアクセスしてください。トライアル・ソフトウェアで、次の開発プロジェクトを構築してください。コメントコメントを登録するにはサインインあるいは登録してください。