ホーム > システムアーキテクト試験 > 2014年
システムアーキテクト試験 2014年 午前2 問03
ソフトウェアパターンのうち、GoFのデザインパターンの説明はどれか。
エ:抽象度が異なる要素を分割して階層化するためのLayers、コンポーネント分割のためのBrokerなどで構成される。
ウ:構造、分散システム、対話型システム及び適合型システムの4カテゴリから構成される。
イ:オブジェクト指向開発のためのパターンとして生成、構造、振る舞いの3カテゴリから構成される。(正解)
ア:Javaのパターンとして引数オブジェクト、オブジェクトの可変性などで構成される。
解説
ソフトウェアパターンのうち、GoFのデザインパターンの説明はどれか【午前2 解説】
要点まとめ
- 結論:GoFのデザインパターンは「生成」「構造」「振る舞い」の3カテゴリに分類されるオブジェクト指向の設計パターンである。
- 根拠:GoF(Gang of Four)とは、Erich Gammaら4人の著者が提唱したデザインパターン集で、オブジェクト指向開発の基本的な設計手法を体系化している。
- 差がつくポイント:GoFパターンはJava固有ではなく言語非依存であり、分散システムや階層化アーキテクチャの分類とは異なる点を押さえること。
正解の理由
選択肢イは「オブジェクト指向開発のためのパターンとして生成、構造、振る舞いの3カテゴリから構成される」とあり、これはGoFのデザインパターンの定義そのものです。GoFは1994年に出版された『Design Patterns: Elements of Reusable Object-Oriented Software』で、23の代表的なパターンを3つのカテゴリに分類しました。これが現在のソフトウェア設計における基本的な枠組みとなっています。
よくある誤解
GoFパターンはJava専用のパターンではなく、言語に依存しない設計手法です。また、システムの階層化や分散システムの分類とは異なり、あくまでオブジェクト指向設計のパターン集です。
解法ステップ
- GoF(Gang of Four)が誰かを確認する(Erich Gammaら4人の著者)。
- GoFのデザインパターンの特徴を理解する(生成、構造、振る舞いの3カテゴリ)。
- 選択肢の説明とGoFの定義を照合する。
- Java固有やシステム構成の説明はGoFの説明と異なるため除外する。
- 3カテゴリの説明がある選択肢イを正解と判断する。
選択肢別の誤答解説
- ア: Java固有のパターンとして説明しているが、GoFは言語非依存でありJava限定ではないため誤り。
- イ: 正解。GoFのデザインパターンは生成、構造、振る舞いの3カテゴリに分類される。
- ウ: 分散システムや対話型システムのカテゴリはGoFの分類ではなく、別のシステム分類に関する説明で誤り。
- エ: LayersやBrokerはアーキテクチャパターンの例であり、GoFのデザインパターンの分類ではないため誤り。
補足コラム
GoFのデザインパターンはソフトウェア開発における再利用性や保守性を高めるための設計手法です。代表的なパターンには「Singleton(生成)」「Adapter(構造)」「Observer(振る舞い)」などがあり、これらは多くのプログラミング言語で応用されています。近年はマイクロサービスやクラウド環境に適した新しいパターンも注目されていますが、GoFパターンは基礎として重要です。
FAQ
Q: GoFのデザインパターンはどの言語で使えますか?
A: GoFのパターンは言語非依存で、Java、C++、Pythonなど多くのオブジェクト指向言語で利用可能です。
A: GoFのパターンは言語非依存で、Java、C++、Pythonなど多くのオブジェクト指向言語で利用可能です。
Q: GoFの3カテゴリは何ですか?
A: 「生成(Creational)」「構造(Structural)」「振る舞い(Behavioral)」の3つのカテゴリに分類されます。
A: 「生成(Creational)」「構造(Structural)」「振る舞い(Behavioral)」の3つのカテゴリに分類されます。
Q: GoFパターンとアーキテクチャパターンの違いは?
A: GoFパターンはクラスやオブジェクトの設計に関するパターンで、アーキテクチャパターンはシステム全体の構造設計に関するパターンです。
A: GoFパターンはクラスやオブジェクトの設計に関するパターンで、アーキテクチャパターンはシステム全体の構造設計に関するパターンです。
関連キーワード: GoFデザインパターン, オブジェクト指向設計, 生成パターン, 構造パターン, 振る舞いパターン, ソフトウェアパターン, 設計パターン分類