Java には合計 23 の一般的なデザイン パターンがあります。主に創造型、構造型、行動型の3つに分類できます。
クリエイティブな設計パターンには以下が含まれます:
1. シングルトン、シングルトン モード: クラスにインスタンスが 1 つだけ存在し、一意のグローバル アクセス ポイントを提供するようにします。
2. 抽象ファクトリー: 具体的なクラスを指定せずに、一連の関連オブジェクトまたは相互依存オブジェクトを作成するためのインターフェイスを提供します。
3. ファクトリ メソッド: オブジェクトを作成するためのインターフェイスを定義します。ファクトリ メソッドは、クラスのサブクラスへのインスタンス化を遅らせます。
4. ビルダー、構築モード: 複雑なクラスの構築と表現を分離し、同じ構築プロセスを持つクラスが異なる表現を持つことができるようにします。
5. プロトタイプ、プロトタイプ モード: プロトタイプ インスタンスを使用して、作成するオブジェクトのタイプを指定し、プロトタイプをコピーして新しいオブジェクトを作成します。
動作設計パターンには以下が含まれます:
6. Itrator、反復子パターン: オブジェクトの内部表現を公開せずに、集合オブジェクトの内部要素を順次走査するメソッドを提供します。
7. オブザーバー、オブザーバー パターン: オブジェクト間の 1 対多の関係を定義します。オブジェクトが変更されると、それに依存するオブジェクトが通知され、それに応じて更新されます。
8. テンプレート メソッド: 操作でアルゴリズムのスケルトンを定義し、一部のステップをサブクラスに延期します。Templete メソッドを使用すると、アルゴリズムのスケルトンを変更せずに、サブクラスがアルゴリズムの特定のステップを変更できます。
9. コマンド、コマンド モード: リクエストをオブジェクトとしてカプセル化し、さまざまなリクエストでユーザーをパラメータ化し、リクエストをキューに入れ、リクエスト ログを記録し、取り消し可能な操作をサポートできます。
10. 状態、状態モード: オブジェクトの状態が変化したときに、オブジェクトの動作を変更できるようにします。
11. 戦略、戦略パターン: 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化して、アルゴリズムを使用する顧客から独立させることができます。
12. 責任の中国、責任の連鎖モデル: 複数のオブジェクトにリクエストを処理する機会を与え、リクエスターとプロセッサー間の結合関係を回避します。
13. メディエーター、メディエーション モード: メディエーター オブジェクトを使用して、いくつかのオブジェクトの対話をカプセル化します。
14. ビジター、ビジター モード: オブジェクト構造内の各要素に作用する操作を表し、各要素のクラスを変更せずに、この要素に作用する新しい操作を定義できます。
15. インタプリタ、インタプリタモード: 言語を指定して、その文法表現を定義し、その言語の文を解釈するためにその表現を使用するインタプリタを定義します。
16. Memento、メモモード: オブジェクトの内部状態をキャプチャし、オブジェクトを破壊せずにこの状態をオブジェクトの外部に保存します。
構造設計パターンには以下が含まれます:
Seventeen、複合、結合モード: オブジェクトをツリー構造に結合して、部分と全体の関係を表すため、ユーザーは単一のオブジェクトと結合されたオブジェクトを一貫して使用できます。
18. ファサード、外観モード: サブシステム内の一連の構造に一貫したインターフェイスを提供し、システムを使いやすくします。
19. プロキシ、プロキシ モード: このオブジェクトへのアクセスを制御するために他のオブジェクトにプロキシを提供します。
20. アダプター、アダプター モード: インターフェイスの種類をユーザーが必要とするインターフェイスの種類に変換します。アダプターにより、互換性のないインターフェイスのために連携できないクラスが連携できるようになります。
21. Decorator、デコレーション モード: 追加機能の点で、Decorator はサブクラスを生成する方法よりも柔軟です。
22、ブリッジ、ブリッジ モード: 抽象部分を実装部分から分離して、独立して変更できるようにします。
23. フライウェイト、フライウェイト モード: 共有オブジェクトを使用して、メモリ使用量をできる限り削減し、できるだけ多くの同様のオブジェクトと情報を共有します。