PROFESSIONAL GAME CREATOR SCHOOL G学院 用語集

OFFICIAL SITEへ戻る

Abstract Factory

 Abstract Factoryは、オブジェクト指向プログラミングで用いられる23種類のデザインパターン の1つです。このデザインパターンはオブジェクトの生成のためのパターンです。
 このAbstract Factoryは、一言でまとめると、異なる”組み合わせ”を持った複数のオブジェクトをひと塊に生成するために用います。特にオブジェクトの生成において、"組み合わせ”が重要視される場合です。トップスやボトム等、ファッションの組合せの様なイメージです。上記文章のみでは説明が分かりにくいですが、まず例をあげましょう。
 例として身近なもので例えますと、パソコンがあるとします。パソコンというものは、必ずCPUやハードディスク、モニタ、キーボード、マウス等の機器の組合せで構成されています。このようなケースの生成に特化しているのがAbstract Factoryメソッドです。
 この例をオブジェクト指向の観点で見てみましょう。機器類は皆オブジェクトです。これらの機器類を全てクラス化します。それらの機器類を把握しているクラス、Abstract Factoryのクラスを設計し、それを継承したクラスでは、どのモニタを使うか、どのマウスを使うか等を明確に決定します。
 細かな説明を加えると、Abstract Factoryクラスは純粋仮想関数を持ちます。純粋仮想関数とは、関数そのものに機能は無く定義のみがあるだけのものです。これは 子クラスを作製して機能を上書き(オーバーライド)する前提で設計されています。親クラスでは純粋仮想関数 として、機器類の各クラスインスタンスを生成するメソッドを用意します。機能を持たない親クラスとは異なり、子クラスではこのメソッドオーバーライドされ、どのような機器の組合せにするかが決定されています。これにより、設計した子クラスの数だけ複数の組み合わせを用意できます。
 注意点は、あくまで、数の決まったものの組み合わせなので、新たに追加する場合、Abstract Factoryの親クラス子クラス全てを書き変えねばならないので非常に難しいです。
 Builderパターンと類似していますが、Builderでは特定クラス(Director)が必ずBuilderに指示を出します。Abstract Factoryは呼び出し元となるクラスが確定しておらず、 メソッドの呼び出しに応じて完成品を返します。

用語集一覧へ戻る