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 | 文法規則をクラスで表現する |
![]() | 増補改訂版Java言語で学ぶデザインパターン入門 結城 浩 ソフトバンククリエイティブ |