メインコンテンツまでスキップ

デザインパターンとは?

定義と意義

  • デザインパターンは、よくある設計課題に対する再利用可能な解決方法のテンプレートである
  • 「どう書くか」ではなく「なぜその設計が有効か」という観点での知識集
  • 一般的に GoF(Gang of Four)による 23 の基本パターンが広く知られている

パターンの分類(GoF の 3 分類)

分類意味主なパターン
Creational(生成)インスタンスの生成方法に関する設計Singleton, Factory Method, Abstract Factory, Builder, Prototype
Structural(構造)オブジェクトの構成・結合に関する設計Adapter, Decorator, Facade, Composite, Proxy, Bridge, Flyweight
Behavioral(振る舞い)オブジェクトの振る舞いや協調に関する設計Strategy, Observer, Command, State, Template Method, Iterator, Mediator, Chain of Responsibility, Visitor, Memento, Interpreter

パターンマップ(一覧)

生成(Creational)
├─ Singleton : 単一インスタンスの共有
├─ Factory Method : 生成をサブクラスに委ねる
├─ Abstract Factory : 関連オブジェクトをまとめて生成
├─ Builder : 複雑な生成手順の分離
└─ Prototype : インスタンスの複製

構造(Structural)
├─ Adapter : インターフェースの互換
├─ Bridge : 抽象と実装の分離
├─ Composite : 階層構造の統一管理
├─ Decorator : 機能の追加をラップで実現
├─ Facade : 簡易な窓口を提供
├─ Flyweight : メモリ効率化のための共有
└─ Proxy : 制御や遅延処理の代理

振る舞い(Behavioral)
├─ Strategy : アルゴリズムの切り替え
├─ Observer : 状態変更の通知
├─ Command : 処理のオブジェクト化
├─ State : 状態ごとの処理分離
├─ Template Method : 処理枠の固定+差分実装
├─ Chain of Resp. : 処理責任の委譲チェーン
├─ Iterator : 集合の走査
├─ Mediator : 仲介者による依存制御
├─ Visitor : 処理を構造外に分離
├─ Memento : 状態の保存・復元
└─ Interpreter : 文法ルールの評価

よく使うデザインパターンと導入理由(Top 10)

パターン解決する課題主な利用シーン
Singletonグローバル状態の一元管理設定・ログ・DB 接続など
Strategy条件分岐の整理課金処理、認証切替など
Observer状態変化の通知UI 更新、Pub/Sub 機構
Factory Method実装依存を回避プロトコル別クライアント生成
Decorator機能の追加ログ付加、権限処理
AdapterAPI の互換化外部連携、レガシー統合
Command処理のカプセル化Undo/Redo、バッチ実行
Facade複雑 API の簡易化サービスラッパー
Template Method差分処理の抽象化出力処理、共通ワークフロー
State状態に応じた処理分離ウィザード、接続状態管理

記憶と実務に結びつけるヒント

  • パターン名だけではなく、 「使った場面」や「過去の経験」 と一緒に覚えると定着しやすい
  • 「この設計、見たことある」「似たことを別の案件でやったな」と思える瞬間が重要

リファクタリングの目的再確認

目的説明
保守性の向上コードの読みやすさと理解のしやすさ
拡張性の確保機能追加時の安全性と効率
バグの予防副作用や修正漏れを減らす
開発速度の維持レビューやテストの効率向上

「動いてるから OK」ではなく、「安全に進化できる構造」を目指す

デザインパターンは、未来の開発効率を支える“再利用可能な設計”の知恵である。