基本モード:
1. インターフェイス パターン: 複数のクラスが同様のサービスを提供する場合、インターフェイス パターンを通じて、異なるサービス プロバイダー クラスによって提供される共通のサービスを抽象化し、独立したインターフェイスとして宣言できます。これにより、クライアント オブジェクトは、変更を加えることなく、さまざまなサービス プロバイダー クラスをシームレスに使用できるようになります。
2. 抽象クラス パターン: 関連するクラスのセットの共通機能の一貫した実装を提供するフレームワークを設計するために使用できます。インターフェイスとは異なり、インターフェイス内のメソッドはサブクラスに実装する必要があります。必要なメソッドは抽象クラスに実装でき、サブクラスは継承するだけで済むため、冗長なメソッドの実装が削減されます。
3. プライベート メソッド パターン: 一部のメソッドは、同じオブジェクト内の他のメソッドまたは内部クラスによってのみ内部的に使用できます。このパターンでは、そのようなメソッドをプライベート メソッドとして設計することをお勧めします。
4. アクセサー パターン: オブジェクトでは、すべてのインスタンス変数がプライベートとして宣言され、オブジェクトのパブリック状態にアクセスするためのパブリック アクセサー メソッドが提供されます。顧客は、アクセサーを使用してオブジェクトをある状態から別の状態に変更できます。オブジェクトはプライベート変数に直接アクセスできます。 JSP の javaBean はこのパターンを使用します。
5. 定数データ マネージャー: アプリケーション内のさまざまなオブジェクトによって使用される定数データを管理するための効果的なストレージ メカニズムを設計するのに非常に適しています。このパターンは、アプリケーション内で値が永続的なデータは、別のオブジェクトに表示することを許可するのではなく、アプリケーション内の他のオブジェクトからアクセスできるように別のオブジェクトに保存する必要があることを示唆しています。このタイプの分離により、アプリケーション内の定数データを管理しやすい一元的なリポジトリが提供されます。
6. 不変オブジェクト: コンストラクター内にすべてのインスタンス変数を設定し、オブジェクトの状態を変更できる他のメソッドを提供しないでください。クラス メソッドをオーバーライドすることによって状態が変更される可能性を防ぐために、クラスを fanal 型として宣言します。すべてのインスタンス変数は fanal 型として記述されるため、コンストラクター メソッドを通じてのみ割り当てることができます。インスタンス変数のいずれかにオブジェクトへの参照が含まれている場合、対応する get メソッド inggai は、Really の代わりにオブジェクトのコピーを返します。オブジェクトそのもの。上記のメカニズムにより、スレッドの安全性が確保され、同時アクセスに関連するすべての問題が自動的に排除されます。
7. モニター: オブジェクトのロックを取得して、一度に 1 つのスレッドだけがオブジェクトのメソッドを実行できるようにします。これは、オブジェクト メソッドの宣言で synchronized キーワードを使用することで Java で実行できます。
作成モード:
役割: OO アプリケーションで最も一般的に実行されるタスクの 1 つを処理します。オブジェクトの作成では、オブジェクトを作成するための一貫した単純な制約付きメカニズムの使用をサポートします。インスタンスの作成方法に関する詳細をカプセル化できます。カップリングの生成。
1. ファクトリ メソッド: クライアント オブジェクトがどのクラスをインスタンス化するかわからない場合、ファクトリ メソッドを使用して、クラス階層または関連クラス グループ内の対応するクラスのインスタンスを作成できます。ファクトリ メソッドは、クライアント自体の一部として設計されることも、個別のクラスで設計されることもあります。その中で、ファクトリ メソッドまたはそのサブクラスを含むクラスによって、どのクラスが選択されるか、およびそのクラスをインスタンス化する方法が決まります。
2. シングルトン: 指定されたクラスのインスタンスが 1 つだけ存在することを保証する、制約付きオブジェクト作成メカニズムを提供します。
3. 抽象ファクトリ: インスタンス化される実際の具体的なクラスをクライアント オブジェクトに指定せずに、関連クラスのセット内でクラスのインスタンスを作成できるようにします。
4. プロトタイプ: オブジェクトを作成する簡単な方法、つまり既存のオブジェクトからオブジェクトをコピーする方法を提供します。
5. ジェネレーター: 複雑なオブジェクトの作成を許可し、オブジェクトのタイプとコンテンツ情報のみを提供でき、オブジェクト作成の詳細をクライアントに透過的にします。このアプローチにより、同じ構築プロセスで異なるオブジェクト表現を生成できます。