デザインパターンの紹介


デザイン パターンはベスト プラクティスを表しており、通常は経験豊富なオブジェクト指向ソフトウェア開発者によって採用されます。デザイン パターンは、ソフトウェア開発プロセス中にソフトウェア開発者が直面する一般的な問題の解決策です。これらのソリューションは、多数のソフトウェア開発者による長期間にわたる試行錯誤の結果です。

デザイン パターンは、繰り返し使用され、ほとんどの人に知られ、分類され、カタログ化された一連のコード設計エクスペリエンスです。デザイン パターンを使用する目的は、コードを再利用し、コードを他の人が理解しやすくし、コードの信頼性を確保することです。 デザイン パターンは、私たち自身にとっても、他者にとっても、そしてシステムにとっても有益であることに疑いの余地はありません。デザイン パターンは、建物のレンガや石と同じように、ソフトウェア エンジニアリングの基礎となります。プロジェクトでデザイン パターンを合理的に使用すると、多くの問題を完全に解決できます。各パターンには、実際にそれに対応する原則があり、それがデザインの理由です。パターンは幅広く使用できます。

GOF(Gang of Four)とは何ですか?

1994 年、Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides は、Design Patterns - Elements of Reusable Object-Oriented Software (中国語訳: デザイン パターン - 再利用可能なオブジェクト指向ソフトウェアの要素) という本を共著しました。 、ソフトウェア開発におけるデザインパターンの概念について初めて言及しました。

4 人の著者は総称して

GOF (Gang of Four) として知られています。彼らが提案した設計パターンは、主に以下のオブジェクト指向設計原則に基づいています。

  • 実装ではなくインターフェイスをプログラムします。

  • 継承よりもオブジェクトの合成を優先します。

デザイン パターンの使用

ソフトウェア開発におけるデザイン パターンの主な用途は 2 つあります。

開発者向けの共通プラットフォーム

デザイン パターンは、特定のシナリオに固有の標準用語システムを提供します。たとえば、シングルトン設計パターンは、シングルトン設計パターンに精通しているすべての開発者が単一オブジェクトを使用でき、プログラムがシングルトン パターンを使用していることを互いに伝えることができるように、単一のオブジェクトを使用することを意味します。

ベスト プラクティス

設計パターンは長期間にわたって開発されており、ソフトウェア開発中に直面する一般的な問題に対する最適なソリューションを提供します。これらのパターンを学ぶことは、経験の浅い開発者がソフトウェア設計を迅速かつ簡単な方法で学ぶのに役立ちます。

デザインパターンの種類

デザインパターンの参考書

Design Patterns - Elements of Reusable Object-Oriented Software (中国語訳:デザインパターン - 再利用可能なオブジェクト指向ソフトウェア要素)によると、デザインパターンは全部で23種類あります。 。これらのパターンは、創造パターン、構造パターン、行動パターンの 3 つの主要なカテゴリに分類できます。もちろん、別のカテゴリの設計パターンである J2EE 設計パターンについても説明します。

シリアル番号 パターンと説明 14

以下は、デザイン パターン間の全体的な関係を説明するために図を使用しています:

the-relationship-between-design-patterns.jpg

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

1. オープン クローズ原則

オープン クローズ原則の意味は次のとおりです: 拡張機能に対してオープン、変更のため閉鎖されました。プログラムを拡張する必要がある場合、ホットスワップ可能な効果を実現するために元のコードを変更することはできません。つまり、プログラムをスケーラブルにし、保守とアップグレードを容易にすることです。この効果を実現するには、インターフェイスと抽象クラスを使用する必要があります。これについては、後で具体的な設計で説明します。

2. リスコフ置換原則

リスコフ置換原則は、オブジェクト指向設計の基本原則の 1 つです。 リスコフ置換原則では、基本クラスが出現できる場所には必ずサブクラスが出現できると述べています。 LSP は継承再利用の基礎であり、派生クラスが基本クラスを置き換えることができ、ソフトウェア ユニットの機能が影響を受けない場合にのみ、基本クラスを真に再利用でき、派生クラスはそれに基づいて新しいクラスを追加することもできます。基本クラスの動作。リスコフ置換原則は、開閉原則を補足するものです。開閉原理を実現するための重要なステップは抽象化であり、基底クラスとサブクラス間の継承関係は抽象化の具体的な実装であるため、リスコフ置換原理は抽象化を達成するための特定のステップの仕様です。

3. 依存関係逆転の原則

この原則は、オープニングとクロージングの原則の基礎です: インターフェイス プログラミングでは、具体性ではなく抽象化に依存します。

4. インターフェイス分離の原則

この原則は、複数の分離されたインターフェイスを使用する方が、単一のインターフェイスを使用するよりも優れていることを意味します。これには、クラス間の結合を減らすという別の意味もあります。設計パターンは実際には、大規模なソフトウェア アーキテクチャから始まるソフトウェア設計のアイデアであり、依存関係の削減と結合の削減に重点を置いていることがわかります。

5. デメテルの法則、別名デメテルの法則

最も知られていない原則とは、システムの機能モジュールを比較的独立させるために、エンティティは他のエンティティとの相互作用をできるだけ少なくする必要があることを意味します。

6. 複合再利用原則

複合再利用原則とは、継承の代わりに合成/集約を使用することを意味します。

クリエイティブパターンが含まれます これらのデザインパターンは、新しいオペレーターを使用してオブジェクトを直接インスタンス化する代わりに、オブジェクトの作成中に作成ロジックを非表示にする方法を提供します。これにより、プログラムは、特定のインスタンスに対してどのオブジェクトを作成する必要があるかをより柔軟に決定できるようになります。
  • ファクトリーパターン

  • 抽象ファクトリーパターン

  • シングルトンパターン

  • ビルダーパターン

  • プロトタイプパターン(プロトタイプパターン)

2構造パターン
これらのデザイン パターンは、クラスとオブジェクトの組み合わせに焦点を当てています。継承の概念は、インターフェイスを構成し、構成されたオブジェクトが新しい機能を獲得する方法を定義するために使用されます。
  • アダプター パターン

  • ブリッジ パターン

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

  • 複合パターン

  • デコレーター デコレーター パターン

  • ファサード パターン

  • フライウェイト パターン

  • プロキシ パターン

3 動作モデル
これらの設計パターンは、オブジェクト間の通信に特に焦点を当てています。
  • 責任連鎖パターン

  • コマンドパターン

  • インタープリターパターン

  • イテレータパターン

  • メディエーターパターン

  • Memento パターン

  • Observer パターン

  • Stateパターン

  • ヌルオブジェクトパターン

  • 戦略パターン

  • テンプレートパターン

  • 訪問者パターン

J2EE パターン これらのデザイン パターンはプレゼンテーションに重点を置いた特別なものです層。これらのモードは Sun Java Center によって認定されています。
  • MVCパターン

  • ビジネスデリゲートパターン

  • 複合エンティティパターン

  • データアクセスオブジェクトパターン

  • フロントコントローラーパターン

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

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

  • オブジェクトパターンを転送