public abstract class AbstractBuild {
protected TestModel3 testModel3 = new TestModel3();
public abstract void builderMethod1();
public abstract void builderMethod2();
public abstract void builderMethod3();
public TestModel3 build() {
return testModel3;
}
}
public class CommonBuilder extends AbstractBuild {
@Override
public void builderMethod1() {
System.out.println("=============== CommonBuilder执行1 ====================");
}
@Override
public void builderMethod2() {
System.out.println("=============== CommonBuilder执行2 ====================");
}
@Override
public void builderMethod3() {
System.out.println("=============== CommonBuilder执行3 ====================");
}
}
public class CommonBuilder2 extends AbstractBuild {
@Override
public void builderMethod1() {
System.out.println("=============== CommonBuilder2执行1 ====================");
}
@Override
public void builderMethod2() {
System.out.println("=============== CommonBuilder2执行2 ====================");
}
@Override
public void builderMethod3() {
System.out.println("=============== CommonBuilder2执行3 ====================");
}
}
public class Director {
AbstractBuild abstractBuild = null;
public Director(AbstractBuild abstractBuild) {
this.abstractBuild = abstractBuild;
}
public void setAbstractBuild(AbstractBuild abstractBuild) {
this.abstractBuild = abstractBuild;
}
public TestModel3 constructModel() {
abstractBuild.builderMethod1();
abstractBuild.builderMethod2();
abstractBuild.builderMethod3();
return abstractBuild.build();
}
}
public static void main(String[] args) {
CommonBuilder commonBuilder = new CommonBuilder();
Director director = new Director(commonBuilder);
TestModel3 model3 = director.constructModel();
System.out.println(" ==================== 建造2 ========================");
CommonBuilder2 commonBuilder2 = new CommonBuilder2();
director.setAbstractBuild(commonBuilder2);
director.constructModel();
}
@Data
public class TestModel4 {
private String cpu;
private String screen;
private String memory;
private String mainBoard;
private TestModel4(Builder builder) {
this.cpu = builder.cpu;
this.screen = builder.screen;
this.memory = builder.memory;
this.mainBoard = builder.mainBoard;
}
public static final class Builder {
private String cpu;
private String screen;
private String memory;
private String mainBoard;
public Builder cpu(String cpu) {
this.cpu = cpu;
return this;
}
public Builder screen(String screen) {
this.screen = screen;
return this;
}
public Builder memory(String memory) {
this.memory = memory;
return this;
}
public Builder mainBoard(String mainBoard) {
this.mainBoard = mainBoard;
return this;
}
public TestModel4 build() {
return new TestModel4(this);
}
@Override
public String toString() {
return "Builder{" +
"cpu='" + cpu + ''' +
", screen='" + screen + ''' +
", memory='" + memory + ''' +
", mainBoard='" + mainBoard + ''' +
'}';
}
}
TestModel4 build = new TestModel4.Builder()
.cpu("1")
.memory("2")
.screen("3")
.mainBoard("4")
.build();
- 使用注解 @Builder -
TestModel4 build = TestModel4.builder()
.cpu("1")
.memory("2")
.screen("3")
.mainBoard("4")
.build();