Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

デザインパターン

デザインパターンは、オブジェクト指向設計でよく現れる問題への典型的な解決策のカタログ。GoF(Gang of Four)の 『デザインパターン』(1994)が23種類を整理したことで広く知られるようになった。

いずれも SOLID原則 などの設計原則を、具体的なクラス構造として実装したものと見なせる。 たとえば Strategy は OCP を、依存性注入 は DIP を実現する手段になっている。

分類説明代表例 🧩
生成に関するパターンオブジェクトの生成方法に関するパターンSingleton, Factory Method, Builder, Prototype
構造に関するパターンオブジェクトやクラスの構造(組み立て方)に関するパターンAdapter, Decorator, Composite, Facade
振る舞いに関するパターンオブジェクト間のやり取り・責務の分配方法に関するパターンObserver, Strategy, State, Command, Iterator

現代における位置づけ

GoFパターンが提案された当時(C++や初期のJavaが主流)と比べ、今日の言語は高階関数・ラムダ・ジェネリクス・ミックスインなど 表現力の高い機能を備えているため、一部のパターンは言語機能で代替できるようになっている。

  • 言語機能で不要になりがちなもの:Iterator(多くの言語がネイティブに反復子を持つ)、Strategy の一部(関数を直接渡せば済む場合も多い)

  • 今も現役なもの:依存性注入、Observer(イベント駆動UIやPub/Subの基礎)、Adapter/Facade(外部ライブラリとの境界)

パターンを適用すること自体を目的化せず、「この構造が今のコードの複雑さを本当に減らすか」を基準に選ぶとよい。