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 パターンを応用することによって効率的に生成することができる。

関連項目




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Builder pattern」の関連用語

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

   

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



Builder patternのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS