C#デザインパターン  

ここに掲載したコードは、『増補改訂版Java言語で学ぶデザインパターン入門 / 結城 浩(著)』に掲載されているサンプルコードをC#に移植したものです。
ブログ「Gushwell's C# Dev Notes」に掲載していましたが、多くのブログ記事の中に埋もれてしまっているので、こちらに引っ越すことにしました。なお、ブログに掲載したソースは、原書のソースコードにできるだけ忠実にC#に移植することを心がけましたが、こちらに引っ越す際に、C#2.0, C#3.0の練習も兼ね、すべてのソースに見直しをかけています。どうでもいいところで、LINQを使ったり、ジェネリックスを使ったりしていますが、そこは笑って許してください。
ただ、デザインパターンの本質部分は、C#の特徴を出しつつ、原書の設計を踏襲しているつもりです。

C#のソースファイル(プロジェクトファイル)もダウンロードできるようにしていますので、さらに学習しやすくなっていると思います。ダウンロードは、それぞれのページの下の方にリンクがあります。
解説らしい解説は載せていませんので、『増補改訂版Java言語で学ぶデザインパターン入門 / 結城 浩(著)』も合わせてお読みください。

※当ソースは、Visual C# 2008 Express Editionで動作を確認しています。
  Visual Studio 2005をお使いの方は、ブログの記事を残しておきますので、そちらをご覧ください。

■生成に関するパターン
Factory Method インスタンス作成をサブクラスにまかせる
Singleton たった1つのインスタンス
Prototype コピーしてインスタンスを作る
Builder 複雑なインスタンスを組み立てる
Abstract Factory 関連する部品を組み合わせて製品を作る


■構造に関するパターン
Adapter 皮かぶせて再利用
Bridge 機能の階層と実装の階層を分ける
Composite 容器と中身の同一視
Decorator 飾り枠と中身の同一視
Facade シンプルな窓口
Flyweight 同じものを共有して無駄をなくす
Proxy 必要になってから作る


■振る舞いに関するパターン
Iterator 1つ1つ数え上げる
Template Method 具体的な処理をサブクラスにまかせる
Strategy アルゴリズムをごっそり切り替える
Visitor 構造を渡り歩きながら仕事をする
Chain of Responsibility 責任のたらい回し
Mediator 相手は相談役1人だけ
Observer 状態の変化を通知する
Memento 状態を保存する
State 状態をクラスとして表現する
Command 命令をクラスにする
Interpreter 文法規則をクラスで表現する

4797327030増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ