トップページ > コンテンツ > プログラミング効率化 > プログラムを作る上での考え方 > デザインパターン > Builder

■メリット
複雑なコンストラクタの処理を
DirectorとBuilderに任せることができる。

クラス内のコンストラクタ処理を外出しすることで、
クラス自体の可読性低下を防止するのがメリット。

■実装例
/*User.java*/
public class User {
    public static void main(String[] args) {
        Builder builder = new Builder();
        Director director = new Director(builder);
        ClassA classA = director.classA_construct();
        classA.printParam1();
    }
}

/*Builder.java*/
//インスタンスの初期化に必要な機能を細分化して定義
//コンストラクタをBuilderとDirectorに分けたがイメージ近い
public class Builder {
    String class_param1;

    Builder() {
        this.class_param1 = "";
    }
    void init_funcA() {
        class_param1 += "funcA";
    }
    void init_funcB() {
        class_param1 += "funcB";
    }
    ClassA getTargetClass() {
        ClassA obj = new ClassA(class_param1);
        return obj;
    }
 }

/*Director.java*/
//Builderで細分化された機能を組み合わせることで、インスタンスの初期化を行う
//コンストラクタをBuilderとDirectorに分けたがイメージ近い
public class Director {
    private Builder builder;
    Director(Builder builder) {
        this.builder = builder;
    }
    //初期化の内容。Builderで提供している機能を組み合わせて作る。
    ClassA classA_construct() {
        builder.init_funcA();
        builder.init_funcB();
        return builder.getTargetClass();
    }
}

/*ClassA.java*/
public class ClassA {
    String classA_param1;

    ClassA(String classA_param1) {
        this.classA_param1 = classA_param1;
    }

    void printParam1() {
        System.out.println(classA_param1);
    }
}
最終更新:2021年07月07日 22:19