デザインパターン(GoF)とは?でざいんぱたーん
デザインパターン(GoF)とは、オブジェクト指向設計で繰り返し現れる問題と、それに対する定石の構造を23個に整理したカタログ。オブジェクトの作り方に関わる生成、クラスやオブジェクトの組み合わせ方に関わる構造、処理の受け渡し方に関わる振る舞いの3群に分類される。名前が付いていることで設計意図を短い語で伝えられる点に価値がある。
最終更新:2026-10-06
この語が出る過去問を解く →背景
同じ構造の設計が現場ごとに別の名前で再発明され、意図を伝えるのに毎回長い説明が要る状態が続いていた。建築のパターン・ランゲージを借りて、問題・解決・結果を定型の書式で記述したのがGamma・Helm・Johnson・Vlissidesの4人(GoF)の仕事である。目的は設計の共通語彙を与えることであって、コードの部品を配ることではない。
具体例
QtのシグナルとスロットはObserverそのもので、値の変化を購読側へ通知する。組込みでは、機器のモード(待機・計測・エラー)を分岐の山にせず書く手段としてStateパターンが使われ、状態ごとの処理を別クラスへ割り当てる。
試験での引っ掛け
GoFが扱うのはオブジェクト指向設計レベルの構造であって、業務分析のパターンや、レイヤ化・パイプフィルタといったアーキテクチャパターン、開発プロセスのパターンとは層が違う。Singletonのように、組込みでは初期化順序と複数タスクからの同時アクセスの扱いで実装が変わる点も問われやすい。
関連用語
出た過去問
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問22(IPA)
デザインパターンの一つであるObserverパターンを利用して実現できることはどれか。
正解:あるオブジェクトの状態が変化したときに、それに依存する全てのオブジェクトに自動的に通知する。
要点:Observerは状態変化を依存オブジェクトへ自動通知する
Observerパターンは、観測される側(Subject)と観測する側(Observer)を分離し、状態が変わったときに登録済みの観測者へ一斉に通知する構造である。通知される側の具体的な型を観測される側が知らずに済むので、依存の向きが一方向に整理され、通知先を後から増減できる。イベント通知や画面更新の仕組みに広く使われる。
出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問17(IPA)
デザインパターンの中のストラテジパターンを用いて、帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。
正解:新規フォーマット用のアルゴリズムの追加が容易である。
要点:ストラテジはアルゴリズムを差し替え可能に切り出す
ストラテジパターンは、切り替えたいアルゴリズムを共通のインタフェースをもつクラスとして切り出し、利用側は抽象クラス越しに呼び出す設計である。新しいフォーマットに対応したいときは、既存のクラスに手を入れずに新しいサブクラスを追加するだけで済むため、拡張が容易になる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの4 開発技術 > 2. 設計 > (12) 部品化と再利用に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。