超ワイドなデザインパターンの45種類!

デザインパターン(デザインパターン)一般的に、経験豊富なオブジェクト指向のソフトウェア開発者によって使用されるベストプラクティスを表します。デザインパターンは、ソフトウェア開発プロセスにおけるソフトウェア開発者が直面する共通の問題への解決策です。これらのソリューションは、最大合計時間の長い期間のための試行錯誤を通じて、多くのソフトウェア開発者です。

タイプのデザインパターン

デザインパターンの45種類の4つのカテゴリが、サブタイプのモデル、構造モデル、行動パターン、J2EEデザインパターンを作成します。

図1に示すように、スキーマを作成(生成に関するパターン)(8種)

これらの設計は、むしろ、new演算子を使用して直接インスタンス化されたオブジェクトよりも、論理オブジェクトの作成中に作成されたパターンを非表示にする方法を提供します。オブジェクトが特定のインスタンスのために作成される必要があるかを決定するときに、このプログラムはより柔軟になります。

  • Factoryパターン(ファクトリパターン)

  • 抽象ファクトリー(Abstract Factoryパターン)

  • シングルトン(Singletonパターン)

  • ビルダーモード(Builderパターン)

  • プロトタイプモデル(Prototypeパターン)

  • プールされたモード(プール)

  • 例えば、マルチモード(Multiton)

  • 静的ファクトリパターン(静的ファクトリー)

図2に示すように、構造モデル(構造パターン)(13種)

これらのデザインパターンは、クラスとオブジェクトの組み合わせに焦点を当てます。継承の概念は、インタフェースオブジェクトの新しい特徴の組み合わせの組み合わせを定義するために使用されます。

  • アダプタモード(Adapterパターン)

  • ブリッジモード(ブリッジパターン)

  • フィルタモード(フィルター、基準パターン)

  • コンバインモード(合成パターン)

  • デコレーター(Decoratorパターン)

  • アピアランスモデル(Facadeパターン)

  • フライ級(Flyweightパターン)

  • エージェントモード(Proxyパターン)

  • データマッピングモード(データマッパー)

  • 依存性の注入モード(依存性注入)

  • ファサード・パターン(ファサード)

  • ストリームインタフェースモード(流暢インタフェース)

  • サインアップモード(レジストリ)

図3に示すように、モデルの種類(行動パターン)(14種)

設計モードでは、オブジェクト間の通信について特に懸念しています。

  • Chain of Responsibilityパターン(Chain of Responsibilityパターン)

  • コマンドモード(コマンドパターン)

  • Interpreterパターン(通訳・パターン)

  • イテレータパターン(イテレータパターン)

  • 仲介モデル(Mediatorパターン)

  • メモモード(Mementoパターン)

  • Observerパターン(Observerパターン)

  • モード状態(状態パターン)

  • ヌルオブジェクトモード(nullオブジェクトパターン)

  • 戦略モード(Strategyパターン)

  • テンプレートモード(テンプレートパターン)

  • Visitorパターン(Visitorパターン)

  • スペックモード(仕様)

  • Visitorパターン(ビジター)

4、J2EEデザインパターン(10種類)

デザインモードでは、プレゼンテーション層について特に懸念しています。これらのモードは、SunのJavaセンターによって識別されます。

  • MVCパターン(MVCパターン)

  • エージェントモード(ビジネスデリゲートパターン)

  • 組成エンティティモード(コンポジットエンティティパターン)

  • モードのデータアクセスオブジェクト(データアクセスオブジェクトパターン)

  • フロントエンドコントローラモード(フロントコントローラパターン)

  • インターセプタフィルタパターン(インターセプトフィルタパターン)

  • サービスロケータパターン(サービスロケータパターン)

  • オブジェクトの転送モード(転送オブジェクトパターン)

  • 主モード(委任)

  • プールモデル(リポジトリ)

デザインパターンの6つの原則

1、開閉原則(オープンクローズ原理)

:開閉の原理が意味拡張のために開いたが、修正のため閉鎖しましたプログラムを展開する必要がある場合は、ホットスワップ可能なの効果を達成するために、既存のコードを変更しません。要するに、良い作るためにプログラムの拡張を維持し、アップグレードが容易です。この効果を達成したい、我々は詳細設計に従う、インターフェースや抽象クラスを使用する必要があり、我々は、この点に言及します。

2、リヒターの置換原則(リスコフの置換原則)

リヒター置換原則は、オブジェクト指向設計の基本原則の一つです。任意の基底クラスが表示されることができる場所でリヒターの置換原則、サブクラスが表示されることができるようになります。LSPは礎石が多重継承される基本クラスを置き換えることができ、派生クラス、および機能のソフトウェアユニットが影響を受けていない場合にのみ、基本クラスが実際に再利用することができ、および派生クラスは、基本クラスに基づいて上の新しい追加することができます行動。相補性の原理はリヒターの置換原則閉鎖されています。リヒター置換原理は抽象を達成するための具体的な手順については、仕様ですので、開口部の原理を実装し、終値は、抽象化の重要なステップであり、継承ベースクラスとサブクラスは、抽象的、具体的な実現です。

3.依存性逆転原理(依存性逆転原理)

この原則は、開閉、特定のコンテンツの原則に基づいている:インターフェイスのプログラミングのための、抽象的ではなく、特定に頼るに依存します

4、インターフェース分離原理(インタフェース偏析原理)

この原理は、ということを意味インターフェース分離複数の、単一のインターフェースを使用するよりも優れていますそれはまた別の意味がありました:クラス間の結合を低減します。このように、依存を減らす重視し、ソフトウェア設計を、アップグレード、メンテナンスが容易な大規模なソフトウェアアーキテクチャからのデザインパターンは、結合を低減するという事実。

5、デメテル、また、少なくとも既知の原則として知られている(デメテル原理)

これは、少なくとも既知の原理を意味する:エンティティがエンティティと他の間の可能な相互作用、例えばその独立した機能モジュールのように少し発生しました。

図6に示すように、多重化原理(複合リユース原理)の合成

合成多重化原理は意味:/の代わりに相続の合成ポリマーの情報を利用すること。

デザインパターンの約45種類

1、工場出荷時のパターン

工場出荷時のパターン(ファクトリパターン)最も一般的なデザインパターンの一つデザインパターンのこのタイプのオブジェクトを作成するための最良の方法を提供し、スキーマを作成します属します。

ファクトリモードでは、我々はあなたがオブジェクトを作成するときに論理を作成するには、クライアントを公開していないだろう、と共通のインターフェースを使用して新しく作成されたオブジェクトを指すように。

意図:  サブクラスへの遅延を作成するプロセスとなるよう作成されたオブジェクトのインタフェースを定義し、サブクラスはクラスファクトリのどのインスタンスを決定させ、工場モデル。

主に解決するために:  インターフェースオプションの主な問題を。

ときに使用する:  あなたは、私たちは間違いなく計画異なる条件で異なるインスタンスを作成するとき。

解決方法:  サブクラスは、ファクトリインタフェースを実装してみましょう、それが返品された製品の抽象的です。

キーコード:  作成プロセスは、そのサブクラスで実行されます。

アプリケーション例:

(1)あなたが車を必要とする、あなたは工場内から直接拾うことができ、車はそれを行う方法で、チューブを持つことなく、車の中、この特定の実装。

(2)休止状態の変化は、単にデータベースのダイアレクトを変更すると駆動することができます。

利点:

(1)呼び出し側はそれにその名前を知って、オブジェクトを作成したいと考えています。

(2)高いスケーラビリティ、あなたがすることができファクトリクラスの拡張限り、製品を追加したい場合。

遮蔽製品(3)具体的な実現は、発呼者は唯一の製品のインターフェースに関する。

短所:  たび製品増加、コンクリート工場クラスおよび目的を達成する必要性を増加させる、そのようなシステム増加のクラスの数が指数関数的にその、ある程度、システムの複雑さを増加させるだけでなく、システムの特定のクラスを増加させます依存性。これは良いことではありません。

使用シナリオ:

(1)ロガー:レコードは、ユーザーがどこかにログインするために選択することができ、リモートサーバなどのシステムイベント、ローカルのハードディスクに記録することができます。

(2)データベースへのアクセスを、ユーザーがデータベースは変更になる場合があります時に最後を使用して、データベース・システムの種類を知っていないとき。

(3)サーバへの接続のためのフレームワークを設計し、あなたはこれらの3つの製品には、クラスとして、共通のインタフェースを実装することができ、「POP3」、「IMAP」、「HTTP」を3プロトコルを必要としています。

注意:  このクラスは、複雑なオブジェクトを生成する必要がある任意の場所にパターンを作成するために、あなたはFactory Methodパターンを使用することができます。注意すべき地域の一つは、工場出荷時のモード、および単純なオブジェクトに適した複雑なオブジェクトは、特に、工場モデルを使用せずに、新しいによって作成されたオブジェクトを完了するためにのみ必要があるということです。工場出荷時のモードは、それがファクトリクラスを導入する必要がある場合、それはシステムの複雑さを増加します。

2、Abstract Factoryパターン

抽象ファクトリー(Abstract Factoryパターン)が工場周辺のスーパー他の工場を作成することです。植物はまた、スーパー、他の工場の工場として知られています。デザインパターンのこのタイプのオブジェクトを作成するための最良の方法を提供し、スキーマを作成します属します。

Abstract Factoryパターンでは、インターフェースは、関連するオブジェクトファクトリを作成する責任があり、明示的にクラスを指定する必要はありません。オブジェクトファクトリに基づいて生成された各工場モデルを提供することができます。

意図:  その具象クラスを指定せずにインターフェイスを作成するために、関連または依存オブジェクトのシリーズを提供します。

主に解決するために:  インターフェースオプションの主な問題を。

ときに使用する:  システム製品は、複数の製品ファミリを持ち、消費者製品の中に家族だけのシステム。

どのように解決するために:  内部の製品ファミリに、複数の製品を定義します。

キーコード:  工場内の複数の同様の製品を集約します。

応用例:  仕事は、いくつかの会議に参加するためには、それも家族のために、たとえば、ビジネススーツ(完全なセット、特定の製品のシリーズ)、ファッションドレス(完全なセット、特定の製品のシリーズ)と衣服の2つの以上のセットがなければなりませんそれはビジネスの女性、ビジネスメンズ、女性のファッション、メンズファッションを有していてもよく、これらはまた、特定の製品のそのシリーズのセットです。ケースが想定される(実際には存在しない、または他のではなく、共産主義が、Abstract Factoryパターンを説明するのに助長している)、ご自宅で、1つのワードローブ(コンクリートプラント)をのみ、このような特定の種類を格納することができます服(完全なセット、特定の製品のシリーズ)は、あなたがクローゼットから服のこのセットを取得するたびに自然に出ました。OOを理解するために考えて、すべてのワードローブ(コンクリートプラント)は(特定の具体的なジャケット(特定の製品)、パンツなどのワードローブ(抽象工場)1のクラス、および衣服の各1セットとしています実際には、特定のジャケットコート(抽象的製品)の製品)である、特定のパンツパンツ(別の抽象製品)です。

長所:  それは、クライアントが常に同じ製品ファミリにのみオブジェクトを使用保証する場合、複数のオブジェクトの製品ファミリーが一緒に動作するように設計されています。

短所:  製品ファミリの拡張は非常に困難であるが、抽象クリエーターリガ・コードの両方で、シリーズの製品を高めるだけでなく、内部の固有のコードを追加します。

使用シナリオ:

変更セットで皮膚のための(1)QQ、。

(2)異なるオペレーティング・システム・プログラムを生成します。

注意:  製品ファミリは、製品レベルを拡張することは容易拡大することは困難です。

スペースが限られている小型のシリーズは、Word文書に編成デザインパターンの45種類を持っている、あなたは、転送されたメッセージを受け取ることができる完全なドキュメントを取得することができます!

デザインパターン入門のスーパーフル45種類


ヨーヨーを受け取るために962992162:詳しい情報は以下のようになり、連携Javaアーキテクチャ度の冬のQqunに参加するために少しの友人が必要です!

デザインパターン入門のスーパーフル45種類


、ボイスメールの転送、あなたは完全なドキュメントを取得することができます!


おすすめ

転載: blog.51cto.com/14378044/2405644
おすすめ