Builder パターン

Advertisement

複雑なオブジェクトを生成する

作成したいオブジェクトの種類を指定するだけで、複雑な生成過程を経てオブジェクトが生成される。クライアントはオブジェクト生成の際の処理内容を意識する必要がない。

サンプルコード

Director クラス
public class Director {
    public Director() {}

    /** Builderを働かせる */
    public void build(Builder builder){
        builder.setMax();
        builder.setName();
        builder.setColor();
    }
}

Builder クラス
abstract class Builder {
    /** 最大人数の設定 */
    abstract public void setMax();

    /** 色の設定 */
    abstract public void setColor();

    /** 名前の設定 */
    abstract public void setName();

    /** 完成状態 */
    abstract public String myInfo();
}

RedWagon クラス
import java.awt.Color;

public class RedWagon extends Builder{
    public int max;
    public String name;
    public Color color;

    public void setMax(){
        this.max = 10;
    }

    public void setName(){
        this.name = "赤いワゴン";
    }

    public void setColor(){
        color = Color.RED;
    }

    public String myInfo(){
        return "■車体の情報\n" + this.name + "\n"
               + this.max + "人乗り\n"
               + this.color.toString();
    }
}

BlueBike クラス
import java.awt.Color;

public class BlueBike extends Builder{
    public int max;
    public String name;
    public Color color;

    public void setMax(){
        this.max = 2;
    }

    public void setName(){
        this.name = "二人乗りバイク";
    }

    public void setColor(){
        color = Color.BLUE;
    }

    public String myInfo(){
        return "■車体の情報\n" + this.name + "\n"
               + this.max + "人乗り\n"
               + this.color.toString();
    }
}

Main クラス
public class Main {
    public static void main(String[] args){
        Director director = null;
        Builder builder = null;

        director = new Director();
        builder = new RedWagon();
        director.build(builder);
        System.out.println(builder.myInfo());

        builder = new BlueBike();
        director.build(builder);
        System.out.println(builder.myInfo());
    }
}

実行結果
■車体の情報
赤いワゴン
10人乗り
java.awt.Color[r=255,g=0,b=0]
■車体の情報
二人乗りバイク
2人乗り
java.awt.Color[r=0,g=0,b=255]

クラス図

Builder

Advertisement

ショートカット

634トップページ
このカテゴリのトップページに戻る
634ラボ

サイト検索

Google

Web サイト内

Y!ログール