Javaのデザインパターンの23種類

味が異なっているものの1、FACTORY--追撃MMは、最終的には夕食に彼を招待し、KFCやマクドナルドの手羽先は、手羽先は、MMの好きなものですが、あなたはマクドナルドやMMとケンタッキーフライドチキンに行くかどうか、ウェイターがわずか4へ」と言ってライン上の手羽先」。マクドナルドやケンタッキーフライドチキンファクトリーは、手羽先の製造であります

 

  Factoryパターン:別の顧客のクラスとファクトリクラス。いつでも消費者は、あなたは、単に工場に要求することができ、製品を必要としています。消費者は新製品の修正なしに受け入れることができます。欠点は、製品が変化した場合、ファクトリクラスはまた、改変されるべきであることです。以下のような:どのように作成する方法と、クライアントに提供します。

 

 

   2、BUILDER - MMはを聞くのが好きだったが、「私はあなたを愛して」、それが彼らの方言を使用できるように、MMの異なる部分を見ること、である。これらの言葉は、ああ、私は多言語翻訳者を持っている彼女に言いましたすべての言語上のMMは、私はちょうど、対応するキーを押して参照するにはボタンがあり、あなたはつまり、外国MMは簡単にこれは、固定することができ、「私はあなたを愛して」と言って、適切な言語を使用することができます私のビルダーを「私はあなたを愛して」。(これはの機械翻訳とイラクで米軍よりも販売しなければなりません)

 

  構成モード:製品の生成プロセスの内部表現と生成物を分離するように異なる内部表現を有する構造物オブジェクトを生成するプロセス。内部表現を可能に建設モードは、顧客が製品の内部構成の詳細を知らない、独立して異なる場合があります。建設モードは段階的に行われる処理の構築を課すことができます。

 

 

 

  3、FACTORY METHOD--マクドナルドのハンバーガーをご覧くださいMM、異なるMMは、私たちは、私は一般的に言って、そこにウェイターにMMで、ファクトリメソッドパターンを使用し、それぞれが迷惑なものであるということを覚えておいてくださいさまざまな味を持っています」バーガーの種類に固有バーガー」に、ライン上のウェイターと直接MMをしましょう。

 

  Factory Methodパターン:コアファクトリクラスは、もは​​やすべての製品を作成するための責任があるが、抽象的な工場の役割になることを行うには、特定のサブクラスを作成していきますが、触れることなく、実装しなければならない具体的なファクトリクラスを与えるためにのみ責任があります製品カテゴリなどの詳細は、インスタンス化されなければなりません。

 

 

 

  4、MMとPROTOTYPE--は、QQチャット愛情のいくつかの言葉を言うようにしてください、と私は吐き気を催す愛の言葉をたくさん集め、ライン上のQQに裏返しにコピーする限り、必要なときに、これはプロトタイプ、その後、私が愛するものです。(100ドルコピー、あなたがしたいですか)

 

   オリジナルモデルモード:プロトタイプオブジェクトの種類を与えることによって作成されるオブジェクトを指定し、このプロトタイプオブジェクトをコピーする方法と、オブジェクトの同じタイプの多くを作成します。オリジナルモデルモードは製品カテゴリの動的な増減を可能にする、製品の種類、この必要性は、任意の階層構造が事前に決定されていない、元のモデルモデルは、任意の階層構造に適用されます。欠点は、各クラスがクローニング法を装備しなければならないことです。

 

 

  5、SINGLETON--私は6人の美しい妻を持っている、彼らは私の夫は、私の夫は私たちの家Sigletonで、彼らはただ、「夫」は、私が(ちょうど持っていた同じ人に言及していると述べました)それを夢見る、どのような良いことがあることができ

 

  シングルトン:Singletonパターンは、特定のクラスのインスタンスを1つだけ確保し、インスタンスをインスタンス化し、シングルモードの実施形態を全体システムを提供します。需要が唯一の真の「単一インスタンス」でなければなりませんがある場合にシングルトンを使用すること。

 

 

 

 

 

 

      【モード】構造

  6、ADAPTER--は友人のパーティーで美しいサラに会った、香港から来たが、私は広東語を話さない、彼女はマンダリンを話すないだろう、彼は私とサラの間だと、私は、友人のケントに頼らなければなりませんでした(彼は私を再生するかどうかわからない)アダプターは、サラと私はお互いに話すことができます

 

  アダプタ(トランス)モード:2つのクラスがインターフェイスが一緒に働くことができない一致しないため、元の理由で動作するのでように、別のものを期待するクライアントのインターフェイスにクラスのインターフェイス。適応パラメータクラスは、クライアントに適切な例を返すことがあります。

 

 

  7、BRIDGE-- MMは、おはようと言って、朝に会い、夕方にMMを満たし、良い夜と言う。新しい服を着てMMを満たし、あなたの服は、ああ、かなり良いと言う、MMが行う新しいヘアスタイルを打ちます、ああ、あなたの髪はかなり良いと言います。「MMは午前中に会ったと言うことをどのように新しいヘアスタイルを作った」この問題は、BRIDGEの組み合わせでライン上で自分自身を見ていない、私に聞かないでください。

 

  ブリッジモード:2が独立して変化することができるように、抽象とデカップリングの実装は、それはまた、それらの間に強い相関が弱い会合になると言うことですシステムと実現の間のソフトウェアの抽象化を指し、組み合わせ/アグリゲーション関係の代わりに、継承、両者は独立して変えることができるようになっています。

 

 

 

   8、COMPOSITE - メアリーの誕生日の今日。「私の誕生日は、あなたは私に贈り物を送りたい。」「ああ、よく、店に行く、あなた自身を選ぶ。」「このTシャツはかなり、このパッケージも良いですが、買う、このドレスが良く見える買います、 「販売」ねえ、私は3を買っうん、私は唯一の贈り物ああを送信することを約束した。「」それはどのような、Tシャツとスカートプラスバッグ、だけの方法をダビングし、ミス、あなたがそれを包むことができます。 「」......」、MMはコンポジットモードを使用します、あなたはないのだろうか?

 

  モード合成:ツリー構造に標的組織モードの合成は、全体の部分との関係を記述するために使用することができます。合成パターンは、オブジェクト処理のパターン木構造です。ツリー構造によって表される全体的な関係のパターン部の合成。それらのオブジェクトによって別個の構成要素と複合オブジェクトにクライアントが等しく扱わ合成によって得られるような合成パターン。

 

 

   図9は、デコレータ - メアリーは確かに今月末に来るターンSarly歳の誕生日を終えた、または彼女自身のピックを呼び出すことがない、または食事、私は昨年の「最高の裏に書かれた山の頂上に写真、で私の写真を取り出しました贈り物は愛あなたフィッタ」で、その後、額縁を購入するストリート・ギフトショップに(MM売りギフトにもああ非常に美しいです)、次のマイクがアップロードされた美しいボックスを設計しました見つけるために設計された芸術に従事する......我々はデコレータ、最終的にはそれで私の人々を変更され、どのように、それを読みますか?

 

  Decoratorパターン:クライアント拡張オブジェクト機能のための透明な方法で装飾パターンは、継承よりも柔軟性を提供し、継承に代わるものです。その後、動的に元に戻すことができますオブジェクトの増加関数に移動します。生成された基本機能の特徴の順列及び組合せの非常に多く増加しました。

 

 

   10は、FACADE--私は手動絞り、シャッターを調整するので、唯一のプロの絵の外に輝きたい、プロのニコンのカメラを持っていますが、MMは、これらを、私たちは長い時間のために教えています理解することはできません。幸いなことに、カメラはMMはまた私の写真を撮るためにこのカメラを使用できるようにファサードデザインパターンは、すべてが自動的に、カメラによって調整されています。

 

  ファサードモード:外部サブシステムとの通信は、ファサードオブジェクトを介して統一する必要があります。ファサードパターンが容易サブシステムが使用するように、高レベルのインタフェースを提供します。各サブシステムは、ウィンドウの一種類のみ、それはシングルトンであると言うことです窓のこの種の唯一のインスタンスです。しかし、システム全体がウィンドウの種類を複数持つことができます。

 

 

   11、MMとFLYWEIGHT--は最近、新しい携帯電話を買って、あなたはMMの名前が先行し、電話での時間の使用をいくつかの一般的な文章を持って指示することができ、指が磨耗している、毎日テキストメッセージを送信しますあなたは単語がノック言葉もなく、その後送られ、およびすることができます。文がフライ級で共有され、MM名は、コンテキストの状況を使用して、外部の特徴から抽出されます。

 

   フライ級:ボクシングでフライ級中指バンタム級。Flyweightパターンは、きめの細かい多数のオブジェクトをサポートするための効果的な方法を共有することができます。フライ級共有キーは、それが国家や固有外側ユン状態を区別することで行うことができます。極限状態は、楽しむために内部の元に保存されている異なる環境の変化に伴って変化しません。環境中の外部の変更とユン状態が変更されます。ユンは、外側固有状態の状態に影響を与えていない、彼らは相互に独立しています。状態が共有していない従来のクラスと区別するために状態を共有することができ、我々は外に除去クラスから共有状態ではありません。クライアントが直接共有するオブジェクトを作成することはできません、とファクトリオブジェクトを使用する必要があり、共有オブジェクトを作成する責任があります。Flyweightパターンが大きくメモリ内のオブジェクトの数を減らします。

 

 

  12、オンラインチャットでのMMとPROXY--は、常に「やあ、こんにちは」「どこがそれに来たの?」「昔はあなたがどのように?」「それはどのように背の高いのですか?」これらの言葉、本当に迷惑、書き込みで始まりますこれらの言葉を受けた私の右、などのプロキシプログラムは、それを冷却する方法、自動応答を設定し、他の言葉を受けたとき、私は、通知に答えています。

 

   プロキシモード:オブジェクトへのプロキシモードは、プロキシオブジェクト、ソース・オブジェクトへの参照によって制御プロキシオブジェクトを提供します。エージェントは、人や他の人に代わって金融機関やアクションを取るための機関です。いくつかのケースでは、顧客が望んでいないか、または直接オブジェクトを参照することができない、プロキシオブジェクトは、直接顧客とターゲットオーディエンスに仲​​介の役割を果たすことができます。クライアントは、実際のオブジェクトとプロキシのテーマテーマのオブジェクトを伝えることはできません。モードを代行することは、実際のプロキシオブジェクトを認識して、単にプロキシになるオブジェクトのインターフェイスを保持しない場合があり、プロキシオブジェクトはプロキシオブジェクトを作成することはできませんこの時点では、プロキシオブジェクトを作成し、システムに代わって渡すために他の役割を持っている必要があります。

 

 

 

      [動作]

  13、良い時間を浪費のために、英語の授業に行くRESPONSIBLEITY--夜のチェーンが、いくつかの美しいMMの前に座って、すごい、最後の行に座ってちょっと、こんにちは」の書き込み、一枚の紙を見つけ、私は女性を行うことができますあなたはMMの先生に渡されたノートの最初の行に広がっまで渡され、悪い別の後に一枚の紙、上の」往路喜ばせたくない場合友人は?、私は古いメイドうん、実行聞きました!

 

  Chain of Responsibilityパターン:Chain of Responsibilityパターンは、それぞれの多くのオブジェクトは、自宅でそれらへの参照をオブジェクトとチェーンを形成するために参加しました。チェーン決意処理要求に特定のオブジェクトまで、この連鎖移動要求です。お客様が最終的にこの要求を扱うチェーン上のどのオブジェクトかわからない、システムは、クライアントの場合の再組織と流通チェーンの責任のダイナミクスに影響を与えることができません。ハンドラは、2つの選択肢があります。責任を取るか、次の家への非難します。要求は、任意のオブジェクトの最終的な受信側によって受け入れられないかもしれません。

 

 

   14、COMMAND--私はMM管がもたらすために彼女の兄弟のためのメモを書くために私に何を彼女が表示、、、自宅に依存する必要があり、私たちの2の間で情報を転送するために、彼女の兄を満たすことができ、特に厳しかったしていますI. これは、彼に感謝するために彼女の弟とCOMMANDを介して送信されるが、私は彼が言ったことを知って、混合醤油麺を食べに彼に尋ねていません:「私も妹3人の彼氏コマンドを与え、あなたは前にガスの数を最小限に抑えることができます私の顔を食べてください。」

 

  コマンドモード:コマンドモード要求またはオブジェクトにカプセル化操作。コマンドモードは、コマンドの責任と異なるオブジェクトに割り当てられた分離コマンドを実行する責任を、発行します。1つのコマンドモードは、要求が要求を受信する1のインターフェースを知る必要がないので、ない、要求が受信されたかを知るために、一方の当事者との独立を開くための要求の送信を可能にし、操作が行われ、いつ、どのように実行を行うようになっていますA。システムはコマンドを元に戻すサポートしています。

 

 

  15は、INTERPRETER--私は、「バブルMM聖書」、バブルMM上記レイダース、このような工程の様々なMMとのデートは、単に通訳を行う際に、その方法に映画を見に行くと、西洋料理を食べなければなりませんその上に上記のスクリプトの実行に応じました。

 

   インタプリタパターン:インタプリタを提供しながら、与えられた言語インタプリタパターン文法後、その表現のいずれかを定義することができます。クライアントは、言語の文章を説明するために通訳を使用することができます。通訳モデルは、単純な文法、これらのステートメントを説明するために設計された使用パターンを持ってする方法について説明します。モードに記載されている言語インタプリタは、オブジェクトの任意の組み合わせは、インタプリタによって解釈可能です。あなたは一連のルールを組み合わせたものであるインタプリタにおけるコマンドクラス文法モードの階層構造の代表を定義する必要があります。各オブジェクトは、コマンドオブジェクトの解釈を代表して、コマンドの解釈を持っています。コマンドオブジェクトの階層構造の任意の順列及び組合せは、ターゲット言語です。

 

 

 

  16は、ITERATOR--私は彼女と結婚に必死、メアリーと恋に落ちました。

  メアリーは:「私はあなたと結婚したい、自分の条件に合意しました。」

  私:「何の条件私は約束する、あなたが言います。」

  メアリーは:「私は1カラットのダイヤモンドに空想を取りました。」

  私:「私はあなたを買って、そして、買いましたの?」

  メアリーは:「私は軍隊に湖畔の別荘を見ました。」

  私:「私はあなたを買って、そして、買いましたの?」

  メアリーは:「私はバイクのフェラーリを見ました」

  オム椅子に、一口に座って、私の頭を強打:「私が買った、私が買って、それ?」

  ......

 

   イテレータパターン:イテレータモードが収集内部表現を公開することなく、収集の要素の順序へのアクセスを可能にします。一般的と呼ばれる凝集体を形成するために一緒に複数のオブジェクトが、集合オブジェクトコンテナオブジェクトは、オブジェクトのグループを収容することができます。反復サブモード反復ロジックパッケージ別々のサブオブジェクトに、それによって凝集自体を離間。反復子モデルは、集約インターフェースを簡素化します。各集合オブジェクトは、イテレータ反復の各状態は、互いに独立していてもよい、サブオブジェクトの一つまたは複数の反復を有することができます。反復アルゴリズムは、集約の役割の変化とは無関係にすることができます。

 

 

 

  正確にどのくらいのお金を誰に計算しなければならない、と幸い私は次で、チップのその数に応じてお金を数えるた、私から取るためにお金を作った、失われた互いの間に17、MEDIATOR-- 4 MM遊ぶ麻雀、お金はまた、すべてのもの、それOK、私はMM 4台の携帯電話を持って、私を支払いました。

 

   メディエータモード:オブジェクトが重要な影響を与えないように相互に対話する一連のオブジェクトをパッケージ化モードメディエーター方法。彼らは疎結合することができるようになっています。ときに、特定のオブジェクトの変化との間の相互作用は、すぐに他のオブジェクトの数との間の相互作用には影響しません。これらの効果は、互いの変更独立していてもよいことを保証するために。Mediatorパターンは、多対多の変換をやり取りするために相互に作用します。オブジェクトと連携抽象、別の小規模な行動上の他のオブジェクトとオブジェクトの取り扱いの相互作用の挙動にMediatorパターン。

 

 

  18、MEMENTO--は、いくつかのMMとおしゃべりしながら、MMと明記してくださいだけで、その後に何かを言ったか、MMは不幸になりますああ、幸い私はMMがちょうど何かを言っているとの覚書を持っていました私はあなたが常にそれ以前の記録を見ることができます保存された覚書のコピーを配置しています。

 

  メモモード:メモのオブジェクトは、オブジェクトの内部状態の追加のオブジェクトのスナップショットを格納するために使用されます。メモモードは、オブジェクトの状態を破壊することなく、パッケージに意図されて巻き込まれ、外部の、保存され、将来的に保存された状態にオブジェクトを復元する権利時間がかかることがされています。

 

 

  19、OBSERVER--我々は最新のインテリジェンスMMそれを知りたいですか?MMは、収集・インテリジェンスを担当するトムは、新しい情報彼はタイムリーな情報を受け取ることができ、加入者(閲覧者)として、私たちを私たちは、電子メール・グループに直接公開していない通知を見つけ、ライン上で、同社の電子メール・インテリジェンス・グループに参加して

 

  Observerパターン:同時に話題のオブジェクトを監視する複数のオブザーバーオブジェクトように、Observerパターンは、チームに依存関係の数を定義します。オブジェクトの変更のテーマは、オブザーバーは自動的に更新するために、それらを可能にする状態にあるすべてのオブジェクトを通知します。

 

 

 

  彼女についてMMとSTATE--接点は、ああ、彼女の行動が異なる状態において異なるであろう、彼女の状況に注意を払う必要があり、たとえば、あなたは映画を見に行く20、今夜は、MMに興味がありますが、「言うしませんでしたそこに「あなたが嫌い​​ではありませんが、言うMMが好きではありませんでした」ん、というまあのものがありますが、あなたはどのような私の同僚を取ることができますか?何時?映画鑑賞「すでにMMのようなあなたは、言うだろうが」クラブに行くか?」、もちろん、あなたがパフォーマンス中に良い映画を見て、私はMM状態はオハイオ州のようになることを好きではない憎むことはできません。

 

  モード状態:状態モデルは、ときにその内部状態変化オブジェクトは、その動作を変更することができます。オブジェクトが同じクラスを変更するようにこれが見えます。各オブジェクトは抽象クラスのステータスのサブクラスの状態に属し異なる状態オブジェクトでラップされたオブジェクトの振る舞いを研究する状態モード。その意図は、彼らの行動が変化したとき、その内部状態での状態モデルオブジェクトの変更を行うことです。状態モデルは、各システムのステータスの状態のクラスのサブクラスの作成を達成することができるが必要です。システムの状態が変化した場合、システムは、選択されたサブクラスを変更します。

 

 

 

 

 

 

  21は、MMの予定の異なる種類のSTRATEGY--、異なる戦略を使用して、いくつかのより良い映画、よく食べるようにいくつかのスナックを作る、ビーチに行くといくつかのロマンチックな最も適切な単一の目標は、MMを取得することです心は、私はMMああ戦略を追いかけるためのヒントがたくさんあります。

 

   ポリシーモード:アルゴリズムのセットのポリシーモード、各アルゴリズムは、別のクラスにカプセル化され、彼らはお互いを置き換えることができるというように、共通のインタフェースを持っています。ポリシーモードの変更は、アルゴリズムは、クライアントの状況に影響を与えることができないことができます。行動と環境を分離するための戦略モード。メンテナンスとクエリの挙動のクラスを担当する環境、具体的な戦略のクラスを提供するために、様々なアルゴリズム。環境、増減アルゴリズムのアルゴリズム独立したオープンなので、変更が環境やクライアントには影響しません。

 

 

  22、TEMPLATE METHOD--は、この古典的な記事「を、ベッドに女の子を説得する方法」をお読みになりましたか?偶然に女の子は8つのステップ(テンプレート法)に、愛撫、追求、キス、前戯、手を開始し、デッドロックを解除するための手順から同じベッドを認識するが、さまざまな状況のための各ステップは、異なるを持っていますあなたの機知の友人(実現)に依存練習、;

 

   テンプレート方法:テンプレートメソッドは、抽象クラス、特定のメソッドやコンストラクタ、残りのサブクラスはロジックを実装強制する抽象メソッド宣言の形で実現される論理の特定の部分を調製しました。残りのロジックの異なる実装ように抽象メソッドの異なるサブクラスは、異なる方法で実施することができます。最初は、最上位の論理的なフレームワークを開発し、達成するための具体的なサブクラスのロジックに詳細を残します。

 

 

   23、花の花束とカードを送信するためにMMのそれぞれを与えるためにVISITOR--バレンタインデーが、各MMは彼女の個人的な特性のために花を送信する必要がありますが、また、個々の特性に基づいて各カードを選ぶために、私は、何が今まで知っている男だ、またはギフトショップの所有者が一人一人の特性に基づいてカードを選ぶだろうので、何かのビジターを行うMMの特性に応じて選択された花の花屋の束をできるように花屋やギフトショップのオーナーを見つけます簡単に。

 

  ビジターパターン:ビジターオブジェクトパターンは、包装操作にデータ構造要素の特定の数が印加されます。これらの動作を変更する必要があると、そのデータ構造の操作を受け付ける不変のままであってもよいです。動作は比較的自由に進化を設定することができるように、システムのデータ構造に適用ビジターパターンは、解放されるべき構造体との間に作用する上のデータ構造及び操作に結合された、比較的不確実です。操作は非常に簡単になるような新しいビジターパターンを追加し、新しい訪問者のクラスを追加することです。訪問者の訪問者の対象物の濃度に関連した行動のパターンではなく、1つのノードクラスに分配されます。Visitorパターンを使用するときは、サブクラスでそれを置くのではなく、訪問者のブラウザの種類・ロジック上のように多くのオブジェクトをしたいです。訪問者は、クラス構造体のメンバーである異なるレベルのいくつかのクラスに階層モードアクセスを横断することができます。

おすすめ

転載: www.cnblogs.com/gaobing1252/p/11110600.html
おすすめ