1つ、エンティティクラス
package com.study.builder_pattern.v2;
public class Computer {
private String monitor;
private String mouse;
private String host;
private String cpu;
private Computer(ComputerBuilder computerBuilder){
this.monitor=computerBuilder.monitor;
this.mouse=computerBuilder.mouse;
this.host=computerBuilder.host;
this.cpu=computerBuilder.cpu;
}
@Override
public String toString() {
return "Computer{" +
"monitor='" + monitor + '\'' +
", mouse='" + mouse + '\'' +
", host='" + host + '\'' +
", cpu='" + cpu + '\'' +
'}';
}
public static class ComputerBuilder{
private String monitor;
private String mouse;
private String host;
private String cpu;
public ComputerBuilder buildMonitor(String monitor){
this.monitor=monitor;
return this;
}
public ComputerBuilder buildMouse(String mouse){
this.mouse=mouse;
return this;
}
public ComputerBuilder buildHost(String host){
this.host=host;
return this;
}
public ComputerBuilder buildCpu(String cpu){
this.cpu=cpu;
return this;
}
public Computer build(){
return new Computer(this);
}
}
}
第二に、メインプログラムの呼び出し
2.1 Kotlin
package com.study.builder_pattern.v2
fun main() {
val computer = Computer.ComputerBuilder().run {
buildMonitor("华为显示器")
buildMouse("华为鼠标")
buildHost("华为主机")
buildCpu("华为cpu")
build()
}
println(computer)
}
2.2 Kotlin
package com.study.builder_pattern.v2;
public class MainClient {
public static void main(String[] args) {
Computer computer = new Computer.ComputerBuilder()
.buildMonitor("华为显示器")
.buildMouse("华为鼠标")
.buildHost("华为主机")
.buildCpu("华为cpu")
.build();
System.out.println(computer);
}
}
3、まとめ
Kotlinを使用すると、ビルダーパターンの称賛に値するチェーンコールはそれほど香りがよくないようです。