GoFデザインパターン23個を完全に理解するブログ #00 基本情報

2025/10/26

プログラミング

t f B! P L
eyecatch 自分のプログラミングがうまく構築できないな〜と感じたら、デザインパターンを理解してみましょう。 プログラミングのデザインパターンには、GoF(Gang of Four)という下記の四人のギャング(徒)が作ったモノらしいです。
- Erich Gamma - Richard Helm - Ralph Johnson - John Vlissides
このデザインパターンを知ると、他人のソースコードを読みやすくなるし、 自分で構築する時も設計で迷うことが少なくなること間違いなし。 世の中には、デザインパターンの書籍などもたくさん発刊されているので、手軽に学習はできると思いますが、 自己理解も含めて、23種類のデザインパターンをブログで説明したいと思います。 今回は、手始めに23種類の名称紹介と、簡単な説明を書いて1ヶ月ほど続くシリーズのスタートにしたいと思います。

GoFデザインパターン23種

① 生成(Creational)パターン:5種類

1. Singleton(シングルトン) 2. Factory Method(ファクトリメソッド) 3. Abstract Factory(抽象ファクトリ) 4. Builder(ビルダー) 5. Prototype(プロトタイプ)

② 構造(Structural)パターン:7種類

6. Adapter(アダプター) 7. Bridge(ブリッジ) 8. Composite(コンポジット) 9. Decorator(デコレーター) 10. Facade(ファサード) 11. Flyweight(フライウェイト) 12. Proxy(プロキシ)

③ 振る舞い(Behavioral)パターン:11種類

13. Chain of Responsibility(責任の連鎖) 14. Command(コマンド) 15. Interpreter(インタプリタ) 16. Iterator(イテレータ) 17. Mediator(メディエータ) 18. Memento(メメント) 19. Observer(オブザーバ) 20. State(ステート) 21. Strategy(ストラテジー) 22. Template Method(テンプレートメソッド) 23. Visitor(ビジター)

生成、構造、振る舞い、についての説明

生成(Creational)パターン

目的: オブジェクトの「作り方」を工夫するパターン。 生成の仕組みを隠して、柔軟に作る。 ポイント: newで直接作るのではなく、「どう作るか」を抽象化する。 例: 同じ設定のインスタンスを何度も作りたくない → Singleton クラス名を知らなくてもオブジェクトを生成したい → Factory Method

要するに

どう作るか。

構造(Structural)パターン

目的: クラスやオブジェクトを「どう組み合わせるか」を整理するパターン。 構造を工夫して柔軟な設計にする。 ポイント: 複雑な構造を分かりやすく再利用可能にする。 例: 複数のオブジェクトを一つのように扱いたい → Composite クラスのインターフェースを変えずに機能追加 → Decorator

要するに

どう組むか。

振る舞い(Behavioral)パターン

目的: オブジェクト同士の「やり取り」や「責任の分担」を整理するパターン。 やり取りの流れを整理して、変更に強くする。 ポイント: 複雑なロジックや条件分岐をスマートに分ける。 例: 状態に応じて動作を変える → State あるイベントを他のオブジェクトに通知する → Observer

要するに

どう動かすか。

GoF以外の有名なパターン

ちなみに、上記以外にも、デザインパターンは存在します。
- MVC / MVVM / MVP(アーキテクチャパターン) - Repository / Service / Factory(ドメイン駆動設計) - Dependency Injection(依存性注入) - Event Sourcing / CQRS など(DDD系)
これらについては、別の機会に紹介したいと思います。

あとがき

知らない単語がいっぱい出てきたので、この時点で挫折しそうになる人も多いかもしれません。 でも、中には、こういう内容を見た時に、新しい絵の具を目の前にした絵描のようなワクワク気分になるタイプの人もいます。 「好きは努力を凌駕する」とは、まさにこのことですね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ