■メリット
複雑なコンストラクタの処理を
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