PROFESSIONAL GAME CREATOR SCHOOL G学院 用語集

OFFICIAL SITEへ戻る

Builder

 Builderは、オブジェクト指向プログラミングで用いられる23種類のデザインパターンの1つです。このデザインパターンはオブジェクトの生成のためのパターンです。
 このBuilderは、一言でまとめると、ある1つのオブジェクトの生成過程において、その生成に用いる素材を自由に柔軟に変更できる生成パターンです。特に”複数”のオブジェクトからなる1つのオブジェクトを生成する場合です。プラモデルをくみ上げるようなイメージです。例を上げて考えてみましょう。
 例としてRPGゲーム等で、プレイヤーが特定の装備を持っているとします。この場合、剣や盾、兜や鎧等、異なる箇所に身につけられるものが一般的でしょう。また、剣は弱い剣も強い剣もありますし、剣一つとっても様々な種類の装備があります。
 この例をオブジェクト指向の観点で見てみましょう。剣も盾も兜も鎧も装備は皆オブジェクトです。また、それらを組み立てるBuilderクラスとそれを指示するディレクタークラスを用意します。Builderクラスでは、組み上げるための部品を作るメンバ関数(メソッド)として純粋仮想関数を持ちます。これは関数そのものに機能は無く定義のみがあるだけの状態です。これは子クラスを作製して機能を上書き(オーバーライド)する前提で設計されています。ディレクタークラスはBuilderクラスに指示を出して、順番にメソッドを実行させます。Builder親クラスの中の剣を持つメソッドや盾を持つメソッドは、子クラスでは「○○ソードを装備」「××の盾を装備」等の具体的に決まった装備を行う機能を持ちます。一通り呼び出すと全ての装備が終わり、この一連の流れを行うのがBuilderクラスです。Builderクラスの数だけ装備のバリエーションがあります。
 ゲームの内容によっては、武器を持たない武道家が登場するかもしれません。その場合、該当のメソッドオーバーライドしなければ装備はされないので、必要な箇所のみ記述すれば良いです。
 Abstract Factoryと類似していますが、Abstract Factoryは呼び出し元となるクラスが決定していませんので、完成品を返す先が未定ですが、Builderは必ずDirectorに返します。

用語集一覧へ戻る