学ぶためのデザインパターン(上)

2019年11月12日に書かれました

理解デザインパターンの前に堤防前に:
;一回のデモプログラムはどのように高いメンテナンス性を必要としないようにゴール1、パターンは、プログラムの保守性の非常に重要な指標である
指向のインターフェイスを認識し、認める2、プログラミングの利点、1にしてくださいルックバックを推奨するものではありません;
3、デザインパターンは、デカップリングの基本的な手段の性質を分離されて積層され、複数のサブ層は、より多くの関係が直感的ではありません。
4、完全にデザインパターンの実装には影響を与えません。需要、ちょうど書き込みコードは、はるかに再建、読んで、読んでも、「ステレオタイプ」デザインパターンに入りました。

スキーマを作成します。

シンプルな工場
ではないデザインパターンは、共通の符号化モードである場合。一緒に単純な静的ファクトリメソッドのオブジェクトインスタンスをカプセル化するための新しいプロセス、クライアント側は、特定の実装クラスのImplに依存しないように、クラスのみを変更する場合、静的メソッドは、最初のデカップリングを達成するために、実装することができ、変更する必要があります。男性、女性、不明、確率基本的に変更なし:私はシナリオでは、このような性別、カテゴリアップとして、静止条件での使用に適したシンプルな工場があると思います。Class.forNameメソッド:反射のさらなる使用は、例えばスケーラビリティ、より簡単な植物を、作ります。

ファクトリメソッドの
欠点は、植物が新しい実装クラスImplを時間を追加するための簡単な必要性があるときに、単純な静的なファクトリメソッド、この単純なファクトリクラスのカップルで、すなわちするImplクラスを変更することです。あなたの簡単なファクトリメソッドは、単純な項目では問題を使用されていない場合は、フレームワークを作成する場合はどのように展開、発信者を聞かせて、想像してみて?私は別のImplクラスが別の工場に依存し、発信者の必要性だけでインスタンスを生成するために、発信者別の工場で決定するImplクラスを追加するための時間、プラス対応するファクトリクラスを、拡張することを確認した場合、これは、ファクトリメソッドです。

抽象工場
出荷時の方法の明らかな欠点は、これらの工場がそれをマージ整理する方法、あまりにも多くのファクトリクラスですか?このようなノートPC +携帯電話のキビの生産として、Huawei社はまた、ブランドによって、ノートPC +携帯電話を製造し、それは2つの工場を持って、1は1つがHuawei社の工場で、キビ工場です。製品別では、2つの工場、携帯電話の工場があり、それはコンピュータの工場です。ブランド:Huawei社はキビや、本製品の属性だけながら製品は、一般的に、携帯電話やノートパソコン考えられています。それは二つの方法、すなわち、ノートパソコンの生産や携帯電話の生産があり、抽象工場プラントのキビとHuawei社の工場、2つの工場でなければなりませんので。

シングルトン
何も言うこと、私は人々が理解することは、コードを書きました。これは、春IOCのコントローラは、DAOデフォルトはシングルトンサービスであることを言及する価値があります。

プロトタイプモデル
使用は深いコピーすべてです。それはそれを言及する価値がある、私は個人的なBeanUtils.copyPropertiesと、同じ名前のフィールドのコピーの二つの異なる種類の間でオブジェクトがアプリケーションのプロトタイプモデルを考えることができると思います。シナリオは、一般的に別の新しいオブジェクトにプロトタイプによってターゲットオブジェクトのコピーから形成され、次いで、適切なフィールドに変更されています。

Builderパターンが
Jooq、MyBatisのジェネレータまたはActivitiは、チェーンの呼び出しには見知らぬ人はいけません使用し、実際には、チェーンはちょうどクライアント側の取締役の責任によると、Builderパターンと呼ばれています。
例えば:.新規BaseResponse.Builder(1).setData (データ).setMessage(「moext」)ビルド()
アプリケーションシナリオが一般的であり、複数の属性があり、いくつかは、代替的属性、ときにオーバーロードコンストラクタ多くの時間は、Builderパターンで書き換え考えることができ、呼び出し側のパラメータ上記のコンストラクタ4にそれらの迅速で非常に非友好的です。

構造モデル

アダプタモード
アダプタモードは、エンティティDTOエンティティデータベーステーブル、さらに符号化プロトコル変換などの間で変換するための最も一般的なプログラミングインターフェイスとして、パターンが比較的大きいです。

フライパターン
パターンフライパターンがあるエンタープライズプロジェクトを使用する必要があり、このようなスレッドプール、接続プールのような種々のプールは、楽しむためにすべてのアプリケーション・メタデータ・モデルです。

プロキシモードは
、より一貫した剤JDK自身のプロキシモードに比べて、達成するためにバイトコードエンハンスメント方法とより直接的にプロキシクラスのJDKインタフェース生成剤、動的プロキシCGLIBが付属して、エージェントは、一般的に使用することができますクラスは、直接プロキシクラスを介してプロキシクラス、プロキシクラスへの外部アクセスを強化しています。

装飾パターン
装飾パターンとプロキシモードは、構造が類似しているが、異なる目的は、デコレータは、オブジェクト元の包装により、大部分のモードをペイント、このような水力装飾石膏モデルによるブランク部屋として、装飾チェーンを適用しました、ソフトロードモードでは、最終的にハードマウントされた部屋のオブジェクトは、ハードカバーの部屋のオブジェクトがアクセス可能である、とプロキシモードでは、あなたが一般的にのみ、プロキシにアクセスすることによって達成することができるプロキシオブジェクトへのアクセスがあり、ラフ住宅オブジェクトのプロセスでは、ハードカバーの部屋の効果を実現しますオブジェクトの効果。Decoratorパターンは広くBIOに使用されています。装飾品のすべての段階で実施されているアクセスしながら、コーディング、日常でのこのモデルの適用は、対象モデルに到達するために、装飾を通じて、ステップによって元のモデルのステップをモデル化の組み合わせを必要とします。もちろん、あなたは、プロセス指向のアプローチを使用するのが大好き、ステッププラス装飾効果によるステップは、それがデザインモードなしでは達成できないという意味ではありませんコーディング要件に影響を与えません。

Facadeパターン
ドライバーが車の打ち上げの内部を気にしないので、一般的な例は、打ち上げロケット、ドライバーである、それは方法オープン、内部であることは、電源システムのオープン、オープン、オープン発電システムの燃料システム、などがあり、詳細は、唯一の車全体に関わる彼は統一openメソッドを持っています。適切なモデルたくさんの直接適用でアスペクトモードGUIプログラミングは、実際には、日常のアプリケーションも、細部の部品へのビューまたは必要ユーザの関心のポイントを使用する際の重要な嘘を意識を使用することができます。

組合せパターン
抽象概念のノードへのディレクトリ、サブディレクトリ、ファイル、最初の必要性は、このノードは、ディレクトリ、サブディレクトリ又はファイルであることができ、その後、ツリーを形成する:組み合わせモードが第1分類することによって、そのようなファイルシステムとして、ツリー構造に抽象化されなければなりません構造。全体への部品の階層関係を表現するツリー構造組織構造、メニュー、ファイルシステムなどで一般的なアプリケーション。

ブリッジモードは
二つの部分が互いに影響を与えることなく、独立して変化させることができるように、ピックアップ抽象「ブリッジ」によって特定部と一部です。あなたはXの考慮すべきプログラムを見つけた場合、製品Yデカルトの例を使用すると、大、中、小カップのコーヒー能力として、かどうかを使用ブリッジモードに検討することができたときに、味がある:味、追加ミルク、砂糖されている3つのあなたの場合それを達成するための継承は、3である 3 = 9種類の実装クラス。そして、ブリッジモードで、容量は抽象一環として、味の一部として実装することができます。すべての味のために参照することによってコーヒーのカテゴリのような味はコーヒーの効果に追加するに至ります。ミルクとコーヒーのカップは、大きな新しいLargeCoffee(新しいミルク())である ; 参照、余分な時間を味わう、容量を追加するときにのみ、実現する味を追加する必要があり、かつ容量クラス、味と容量を達成するためのニーズが独立して変化することができます。どのような状況下で、どのような状況下での抽象的な部分を実装することを選択した部分を選択しますか?一般的抽象的部分では比較的安定しているか、緯度は、このような電力供給会社などの客観的なものを、制限されています。新しい電話番号(新華為() )、そして(新しい電話番号())より良い新しいHuawei社よりも、この携帯電話ので、目的のものが比較的ブランドは、より安定します。

パートIIは、行動パターンを記述します

おすすめ

転載: www.cnblogs.com/mzsg/p/11978028.html