C# デザインパターン
目的
ファクトリーメソッド 作成された具象オブジェクトを、そのオブジェクトを要求したコンシューマーから分離する オブジェクトの実際の作成は、コードが実際に実行されるまで延期できる ロガーファクトリ→Emailロガー、コンソールロガー、データベースロガー
抽象ファクトリ : IHTTPClientFactroy ファクトリのインターフェース オブジェクトのコンシューマーは依存するオブジェクトの詳細を知る必要はない
構造のデザインパターン
ビルダーパターン オブジェクトの構築をオブジェクト自体から分離する 初期化コードをカプセル化でき、オブジェクト自体とは独立してオブジェクト作成を変更できる StringBuilder ApplicationBuilder EF CoerModelBUilder でデータモデルがリレーショナルデータベースと対話する方法の構成をデータモデルから分離している
プロトタイプパターン コピーされるインスタンスから作成するオブジェクトの書類を指定する オブジェクトを動的に作成する柔軟性がある Sytem.Net.Http.Headers
シングルトンパターン インスタンスを一つだけとるので、グローバル変数を使用できる 限られたリソースへのアクセスの規制、 データベース接続プールの管理など
アダプターパターン あるインターフェースを別のインターフェースに変換する データpモデルからビューモデルへのマッピング等
ブリッジパターン 既存のクラスを相互運用できる?
コンポジットパターン
デコレータパターン 他に影響をあたえず単一責任の原則 C# I/O stream 同じインターフェースの下に機能を追加
ファサードパターン 複雑なインターフェースを削減することで、よりシンプルにする 呼び出しをまとめる or インターフェース内の外部システムの依存関係を削除して、 依存先についてあまり知る必要がないようにする NET.System.Environment
Flyweight 大量データを持つ類似オブジェクトが多数ある場合にメモリ使用量を節約することを目的としている 独自のデータを格納するオブジェクトであり、外部データに独自データとしてアクセスする方法 C# string interning
プロキシ シングルトンでの実行、ロールのアクセス許可チェックのデータ アクセスのラップなどに使用 リモートシステムへのアクセス制御
振舞いのデザインパターン
インタープリター
テンプレートメソッド Icompareble