建造者模式
建造者模式是用来构建复杂对象的,例如构造方法中参数过多,使用建造者模式可以让调用者更容易的理解对象的功能。下面使用建造者模式来创建小米手机。调用在进行构建对象时,可以做到见名知意,还可以链式编程。
建造者模式代码
public class XiaoMi {
// 小米手机的属性
private String cpu;
private String screen;
private String memory;
private String mainboard;
// 私有构造器
private XiaoMi(Builder builder) {
// 通过创建者把参数赋值
this.cpu = builder.cpu;
this.screen = builder.screen;
this.memory = builder.memory;
this.mainboard = builder.mainboard;
}
// 重新toString方法
@Override
public String toString() {
return "XiaoMi{" +
"cpu='" + cpu + ''' +
", screen='" + screen + ''' +
", memory='" + memory + ''' +
", mainboard='" + mainboard + ''' +
'}';
}
// 静态内部类(建造者)
public static final class Builder {
// 和外部保持一样的属性
private String cpu;
private String screen;
private String memory;
private String mainboard;
// 构造方法
public Builder(){}
// 设置cpu
public Builder setCpu(String val) {
this.cpu = val;
return this;
}
// 设置屏幕
public Builder setScreen(String val) {
this.screen = val;
return this;
}
// 设置内存条
public Builder setMemory(String val) {
this.memory = val;
return this;
}
// 设置主板
public Builder setMainBoard(String val) {
this.mainboard = val;
return this;
}
// 构建对象
public XiaoMi builder() {
return new XiaoMi(this);
}
}
}
测试代码
public class Test {
public static void main(String[] args) {
// 构建小米手机对象
XiaoMi xiaoMi = new XiaoMi.Builder()
.setCpu("高通骁龙996")
.setScreen("三星屏幕")
.setMemory("高通内存")
.setMainBoard("小米主板")
.builder();
System.out.println(xiaoMi.toString());
}
}