Builder パターン

「Builder」という英単語は、「建築者」・「建築業者」を意味します。

全体を構成している各部分部分の処理を積上げていくのが「Builder パターン」です。


役割り

1. Client(依頼者)
「Director」に建築指示を出します。
2. Director(監督者)
「ConcreteBuilder」の実態に関係なく、「Builder」に提供されているインタフェースのみを使用し、建築します。その構築過程は、「Client」から隠蔽します。
3. Builder(建築者)
建築過程の各メソッドのインタフェースを定めます。
4. ConcreteBuilder(具体的な建築者)
「Builder」が定めたインタフェースを実装します。

▲PageTop

クラス図

Builderパターンのクラス図

Builderパターン クラス図

▲PageTop

サンプル

ソースコード

1. Client.java

public class Client {
    public static void main(String[] args){
        String result = "";
        Director director = new Director(new ConcreteBuilder());
        result = (String)director.construct();
        System.out.println(result);
    }
}

2. Director.java

public class Director {
    private Builder builder;
    public Director(Builder builder){
        this.builder = builder;
    }
    public Object construct(){
        builder.part1("工程1");
        builder.part2("工程2");
        return builder.getResult();
    }
}

3. Builder.java

public abstract class Builder {
    public abstract void part1(String str);
    public abstract void part2(String str);
    public abstract Object getResult();
}

4. ConcreteBuilder.java

public class ConcreteBuilder extends Builder {
    private StringBuffer sb = new StringBuffer();
    public void part1(String str){
        sb.append("part1:" + str + System.getProperty("line.separator"));
    }
    public void part2(String str){
        sb.append("part2:" + str + System.getProperty("line.separator"));
    }
    public Object getResult(){
        return sb.toString();
    }
}

実行結果

C:\sample\desin_pattern\builder>javac Client.java [Enter]

C:\sample\desin_pattern\builder>java Client [Enter]
part1:工程1
part2:工程2
        

▲PageTop