Builder patternとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Builder patternの意味・解説 

Builder パターン

(Builder pattern から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2014/02/19 15:49 UTC 版)

Builder パターン(ビルダー・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 オブジェクトの生成過程を抽象化することによって、動的なオブジェクトの生成を可能にする。

クラス図

Builder パターンのクラス図を以下に挙げる。

利用例

Java による利用例を以下に挙げる。このソースコードは Java SE 5(J2SE 5.0) 以降のバージョンで動作する。

enum Material{WOOD, CLAY, CONCRETE, SNOW}
class Building{
    private Material base;
    private Material frame;
    private Material wall;
    void setBase(Material m){
        this.base = m;
    }
    void setFrame(Material m){
        this.frame = m;
    }
    void setWall(Material m){
        this.wall = m;
    }
    public String toString(){
        return "[Base:" + this.base + ", Frame:" + this.frame + ", Wall:" + this.wall + "]";
    }
}
interface Builder{
    void buildBase();
    void buildFrame();
    void buildWall();
    Building getResult();
}
class JapaneseHouseBuilder implements Builder{
    private Building building;
    JapaneseHouseBuilder(){
        this.building = new Building();
    }
    public void buildBase(){
        this.building.setBase(Material.CONCRETE);
    }
    public void buildFrame(){
        this.building.setFrame(Material.WOOD);
    }
    public void buildWall(){
        this.building.setWall(Material.CLAY);
    }
    public Building getResult(){
        return this.building;
    }
}
class KamakuraBuilder implements Builder{
    private Building building;
    KamakuraBuilder(){
        this.building = new Building();
    }
    public void buildBase(){
        this.building.setBase(Material.SNOW);
    }
    public void buildFrame(){
        this.building.setFrame(Material.SNOW);
    }
    public void buildWall(){
        this.building.setWall(Material.SNOW);
    }
    public Building getResult(){
        return this.building;
    }
}
class Director{
    private Builder builder;
    Director(Builder builder){
        this.builder = builder;
    }
    Building construct(){
        this.builder.buildBase();
        this.builder.buildFrame();
        this.builder.buildWall();
        return this.builder.getResult();
    }
}
public class BuilderTest{
    public static void main(String[] argv){
        Director d1 = new Director(new JapaneseHouseBuilder());
        Director d2 = new Director(new KamakuraBuilder());
        Building b1 = d1.construct();
        Building b2 = d2.construct();
        System.out.println(b1);
        System.out.println(b2);
    }
}

このソースコードは、以下の結果を出力する。

[Base:CONCRETE, Frame:WOOD, Wall:CLAY]
[Base:SNOW, Frame:SNOW, Wall:SNOW]

Director(監督)の管理の元、それぞれの Builder(大工) が異なる Building(生成物) インスタンスを生成しているのが分かる。

関係するパターン

Strategy パターン
Builder を Strategy パターンにおける Context として設計することにより、インスタンスの生成過程をより柔軟にすることができる。
Composite パターン
Composite のような複雑な構造を持つインスタンスは、Builder パターンを応用することによって効率的に生成することができる。

関連項目




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Builder pattern」の関連用語

Builder patternのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Builder patternのページの著作権

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのBuilder パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS