建造者者模式角色: 具体产品(抽象产品) 抽象建造者 具体建造者 指挥者(director)
拓展:当一个类属性过多时,造对象不便捷采用 静态内部类 链式 创建对象
package com.qf.buildDemo.expand;
//重构后的代码
public class PhoneMax {
private String cpu;
private String screen;
private String memory;
private String mainboard;
private PhoneMax(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() {
}
public Builder cpu(String val) {
cpu = val;
return this;
}
public Builder screen(String val) {
screen = val;
return this;
}
public Builder memory(String val) {
memory = val;
return this;
}
public Builder mainboard(String val) {
mainboard = val;
return this;
}
public PhoneMax build() {
return new PhoneMax(this);
}
}
@Override
public String toString() {
return "PhoneMax{" +
"cpu='" + cpu + '\'' +
", screen='" + screen + '\'' +
", memory='" + memory + '\'' +
", mainboard='" + mainboard + '\'' +
'}';
}
}
package com.qf.buildDemo.expand;
public class PhoneMaxTest {
public static void main(String[] args) {
//构建PhoneMax对象
//先创建 内部类对象 让后 调用内部类的方法
PhoneMax phone = new PhoneMax.Builder()
.cpu("intel")
.mainboard("华硕")
.memory("金士顿")
.screen("三星")
.build();
System.out.println(phone);
}
}