デザインパターン
創造的なデザインパターン
シングルトン-クラスのインスタンスが1つだけ作成されていることを確認し、オブジェクトへのグローバルアクセスポイントを提供します。
ファクトリ(ファクトリメソッドの簡易バージョン)-インスタンス化ロジックをクライアントに公開せずにオブジェクトを作成し、共通のインターフェースを介して新しく作成されたオブジェクトを参照します。
ファクトリメソッド-オブジェクトを作成するためのインターフェイスを定義しますが、インスタンス化するクラスをサブクラスに決定させ、共通のインターフェイスを通じて新しく作成されたオブジェクトを参照します。
抽象ファクトリー-クラスを明示的に指定せずに、関連オブジェクトのファミリーを作成するためのインターフェースを提供します。
ビルダー-オブジェクトを作成するためのインスタンスを定義しますが、インスタンス化するクラスをサブクラスに決定させ、構築プロセスをより細かく制御できます。
プロトタイプ-プロトタイプのインスタンスを使用して作成するオブジェクトの種類を指定し、このプロトタイプをコピーして新しいオブジェクトを作成します。
行動設計パターン
責任の連鎖-リクエストの送信者をそのレシーバに接続することを回避し、他のオブジェクトにリクエストを処理する可能性を与えます。-オブジェクトはチェーンの一部になり、オブジェクトの1つがそれを処理するまで、チェーン全体で1つのオブジェクトから別のオブジェクトにリクエストが送信されます。
コマンド-要求をオブジェクトにカプセル化し、さまざまな要求を持つクライアントのパラメーター化を許可し、要求をキューに保存できます。
インタプリタ-言語を指定して、その文法の表現を定義し、その表現を使用して言語の文を解釈します/ドメインを言語に、言語を文法に、文法を階層的なオブジェクト指向設計にマップします
イテレータ-基礎となる表現を公開せずに、集約オブジェクトの要素に順次アクセスする方法を提供します。
Mediator-オブジェクトのセットがどのように相互作用するかをカプセル化するオブジェクトを定義します。Mediatorは、オブジェクトがお互いを明示的に参照しないようにすることで疎結合を促進し、相互作用を個別に変化させることができます。
オブザーバー-オブジェクト間の1対多の依存関係を定義して、1つのオブジェクトの状態が変化したときに、そのすべての依存オブジェクトに通知され、自動的に更新されるようにします。
戦略-アルゴリズムのファミリーを定義し、それぞれをカプセル化して、それらを交換可能にします。戦略により、アルゴリズムはそれを使用するクライアントから独立して変化します。
テンプレートメソッド-操作でアルゴリズムのスケルトンを定義し、一部のステップをサブクラスに延期します。テンプレートメソッドを使用すると、サブクラスはアルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。
訪問者-オブジェクト構造の要素で実行される操作を表します。訪問者を使用すると、操作する要素のクラスを変更せずに新しい操作を定義できます。
Nullオブジェクト-特定のタイプのオブジェクトの欠如に対する代理としてオブジェクトを提供します。/ Nullオブジェクトパターンは、インテリジェントな何もしない動作を提供し、共同作業者から詳細を隠します。
構造設計パターン
アダプター-クラスのインターフェースをクライアントが期待する別のインターフェースに変換します。/アダプターを使用すると、互換性のないインターフェースが原因でクラスを連携させることができます。
ブリッジ-オブジェクトをツリー構造に構成して、部分全体の階層を表します。/ Compositeを使用すると、クライアントは個々のオブジェクトとオブジェクトの構成を均一に処理できます。
複合-オブジェクトをツリー構造に構成して、部分全体の階層を表します。/ Compositeを使用すると、クライアントは個々のオブジェクトとオブジェクトの構成を均一に処理できます。
デコレータ-オブジェクトに動的に追加の責任を追加します。
Flyweight-共有を使用して、内部状態の一部が共通であり、状態の他の部分が変化する可能性がある多数のオブジェクトをサポートします。
Memento-カプセル化に違反することなくオブジェクトの内部状態をキャプチャし、必要に応じてオブジェクトを初期状態に復元する手段を提供します。
プロキシ-オブジェクトへの参照を制御するためのオブジェクトの「プレースホルダー」を提供します。