令和元年度 秋期 システムアーキテクト試験 午前Ⅱ 問3
ソフトウェアパターンのうち,GoFのデザインパターンの説明はどれか。
解答・解説
正解: イ. オブジェクト指向開発のためのパターンとして生成,構造,振る舞いの三つのカテゴリに分類される。
GoF(Gang of Four)のデザインパターンは、オブジェクト指向設計において頻繁に現れる設計上の問題に対する典型的な解決策を体系化したものです。エリック・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディースの4人の共著者によってまとめられた全23種類のパターンは、目的別に以下の3つのカテゴリに分類されます。
- 生成(Creational)に関するパターン:オブジェクトの生成方法を柔軟にするパターン(Factory Method、Singleton、Builderなど5種類)
- 構造(Structural)に関するパターン:クラスやオブジェクトを組み合わせてより大きな構造を作るパターン(Adapter、Composite、Decoratorなど7種類)
- 振る舞い(Behavioral)に関するパターン:オブジェクト間の責任の割り当てやアルゴリズムのやり取りに関するパターン(Iterator、Observer、Strategyなど11種類)
したがって、正解はイです。
各選択肢の解説
- ア:特定のプログラミング言語(Javaなど)の仕様や機能に依存してプログラムを記述する際の定石は、デザインパターンではなくイディオム(Idiom)(またはコーディングパターン)と呼ばれます。したがって誤りです。
- イ:GoFのデザインパターンの正しい説明です。
- ウ、エ:システム全体の構造やサブシステム間の関係を定義するアーキテクチャパターン(POSA:Pattern-Oriented Software Architecture)に関する説明です。POSAでは、アーキテクチャパターンを「構造(Layers、Pipes and Filtersなど)」「分散システム(Brokerなど)」「対話型システム(MVCなど)」「適合型システム(Microkernel、Reflectionなど)」の4つのカテゴリに分類しています。したがって誤りです。