この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

GoF(Gang of Four)のデザインパターンは、1994年にErich Gamma・Richard Helm・Ralph Johnson・John Vlissidesの4人が著書「Design Patterns: Elements of Reusable Object-Oriented Software」で発表した、オブジェクト指向設計における23の再利用可能な設計パターン集。生成(Creational)・構造(Structural)・振る舞い(Behavioral)の3カテゴリに分類される。生成パターン(5種):Abstract Factory・Builder・Factory Method・Prototype・Singleton。構造パターン(7種):Adapter・Bridge・Composite・Decorator・Facade・Flyweight・Proxy。振る舞いパターン(11種):Chain of Responsibility・Command・Interpreter・Iterator・Mediator・Memento・Observer・State・Strategy・Template Method・Visitor。GoFのパターンは言語に依存せず、Java・C++・Python等多くのOOP言語で適用可能。POSAなどアーキテクチャパターンとは抽象度・適用レベルが異なる。

なぜ他の選択肢は違うのか

選択肢 ア
「引数オブジェクト・オブジェクトの可変性(Immutable Object等)」などはJava固有のプログラミングプラクティス(Effective Java等)の内容。GoFのデザインパターンはJava専用ではなく言語非依存の設計パターン集であり、Javaのパターンとして紹介されるものとは異なる。GoFの23パターンはJavaが登場する前の時代から適用されてきた普遍的な設計知識。
選択肢 ウ
「構造・分散システム・対話型システム・適合型システム」の4カテゴリはPOSA(Pattern-Oriented Software Architecture:パターン指向ソフトウェアアーキテクチャ)の分類。Buschmann等が定義したアーキテクチャパターンであり、GoFのデザインパターンとは異なる。POSAはGoFより高い抽象レベルのシステムアーキテクチャを扱う。
選択肢 エ
Layers(レイヤードアーキテクチャ)やBroker(ブローカー)はPOSAのアーキテクチャパターンの例。システム全体の構造を決める抽象度の高いパターンであり、GoFのデザインパターンよりも高い粒度でシステムを設計する。GoFはクラス・オブジェクトレベルの設計パターンであり、システムアーキテクチャレベルのパターンではない。

解くときのポイント

GoF 23パターンの3カテゴリ: 生成(Abstract Factory/Builder/Factory Method/Prototype/Singleton)・構造(Adapter/Bridge/Composite/Decorator/Facade/Flyweight/Proxy)・振る舞い(Chain of Responsibility/Command/Interpreter/Iterator/Mediator/Memento/Observer/State/Strategy/Template Method/Visitor)。