オブジェクト指向設計パターンは、実用的な例を使用して説明しました

0 Comments

行動パターン

これらのタイプのパターンは、オブジェクト間の通信に関 ほとんどの場合、通信オブジェクト間の依存関係は、これらのパターンによって減少し、より良いソフトウェ

責任チェーン

このパターンは、要求に対するレシーバオブジェクトのチェーンを作成します。 これは、要求の送信者と受信者を結合することを回避し、複数のオブジェクトに要求を処理する機会を与えます。 受信オブジェク, 以下の例では、ミドルウェア単位のチェーンが構築されています。 電子メールとパスワードを含む要求は、チェーン内で転送されます。 チェーン内の新しい要素を簡単に追加できます。

コマンド

コマンドパターンでは、オブジェクトは、後でアクションを実行したり、イベントをトリガーしたりするために必要なすべての情報をカプセル化するために使用されます。 以下に示すように、ActionOpenはアクションと、アクションが実行されるオブジェクトを定義します。, より多くの情報は必要とされないし、別の目的、ここにメニューは、行為を実行できる。

インタプリタ

インタプリタパターンは、言語の文法の表現を定義し、その言語の文を解釈する機能を提供します。 以下のコードスニペットでは、Plusオブジェクトは”operand1+operand2″を解釈でき、その式をどうするかを知っています。 構造をあまり変えずに、より多くの通訳を追加することができます。 パーサを利用し通訳者の理解入力します。,

イテレータ

イテレータは、基になる構造を知る必要なく、コンテナの要素にアクセスするためにデータのコンテナをトラバースする また、新しいフォーカストラバーサルバを追加できなく変更にのインタフェースオブジェクトのデータ構造そのものです。
以下に示すChannelSurferは、連続してチャンネルにアクセスできます。 RemoteControlオブジェクトは、チャネルの整理方法を気にする必要はありません。 たとえば、RandomChannelSurferはあまり問題なく追加できます。,

メディエーター

複数のオブジェクトが協力する必要がある場合は、メディエーターパターンが適用されることがあります。 特に、オブジェクトがお互いを知らない場合、緊密に結合してはならない場合、またはそれらの相互作用が複雑な場合、このパターンが役立ちます。
以下の例では、UI要素間に必要ないくつかの相互作用があります。 この相互作用は、メディエーターとしてAuthenticationDialogを介して行われます。 このようにして、相互作用は参加するオブジェクトのいずれかで定義されず、メディエーターに抽出されます。,

Memento

Mementoパターンは、オブジェクトの特定の状態を後で使用するために保存する必要がある場合に便利です。 これにより、そのオブジェクトの実装の詳細のカプセル化に違反しません。 たとえば、undoメカニズムの実装に使用できます。

Observer

オブザーバーパターンでは、オブザーバーオブジェクトはオブザーバーオブジェクトをサブスクライブし、オブザーバーオブジェクトがデータを変更するたびに通知されます。, オブザーバーは疎結合であり、実行時に追加および削除できます。
オブザーバーが最終的にオブザーバーからデータを取得する方法に関しては、プッシュとプルの二つの変種があります。 この場合、observableはobserverがどのようにデータを受信したいのかを知る必要はありませんが、observerは望むようにデータをフェッチできます。

State

状態パターンにより、オブジェクトは内部状態が変化したときの動作を変更できます。, このパターンは戦略パターンに似ていますが、この場合、オブジェクトがどのように動作するかは内部的に決定されま これは、複雑な条件がオブジェクトの動作方法を定義する場合に特に役立ちます。 新しい状態は、既存の状態から独立して追加できます。

戦略

戦略パターンのコンテキストでは、一つのアルゴリズムに複数のバリアントが存在し、一つのバリアントが実行時に実行されるように選択される。,
以下の例では、Compressorオブジェクトを実行時に定義された二つの異なるアルゴリズムのいずれかで使用できます。 アクションを実行するメソッド(createArchive)は、選択したアルゴリズムを適用します。

テンプレート

テンプレートパターンは、アルゴリズムのステップとその順序が定義されているサブクラスの構造を定義します。 これにより、サブクラスがまったく同じ手順に従うことが保証され、概要と一貫性が向上します。, ことができますを定義するデフォルトの実装段階ではオーバーライドするサブクラスによる
以下に示すように、DataParserから継承するすべてのパーサーは、parse()が実行されるときにまったく同じ手順に従います。 これにより、例えば、すべてのパーサのファイルとログの状態にします。

Visitor

Visitorパターンでは、オブジェクト構造と密接に結合された操作を持たずに、実行時にオブジェクトのセットに一つ以上の操作を適用できます。,
これは、異なる具象関数への関数呼び出しが二つのオブジェクトの実行時の型に依存する二重ディスパッチを実装しましょう。 以下の例では、一方の側にはルート要素があり、他方の側にはそれぞれルート要素に対して異なる機能を実行するvisitorオブジェクトがあります。 今後さらに訪問者が追加された場合、ルート要素を変更する必要はありません。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です