/**
* @author 左五六
* @Date 2020/9/9 10:07
*/
/**
* 建造者模式(重点)
* 1、静态内部类,含必选参数的构造器
* 2、静态内部类Builder包含所有的原实例的所有属性
* 3、set方法返回Builder实例
* 4、原实例类里面包含有一个私有的构造方法传进来的是builder实例
* 5、最后在静态Builder里面提供一个build方法,return new 实例(this)
*
* */
public class Computer {
private String cpu;//1,表示必须
private String ram;//1
private int usbCount;//2
private String keyBoard;//2
private String display;//2
//提供了一个私有的构造方法,供本类里面调用
private Computer(Builder builder){
this.cpu = builder.cpu;
this.display = builder.display;
this.keyBoard = builder.keyBoard;
this.ram = builder.ram;
this.usbCount = builder.usbCount;
}
public static class Builder{
private String cpu;//1,表示必须
private String ram;//1
private int usbCount;//2
private String keyBoard;//2
private String display;//2
//必选参数通过builder的构造函数来指定
public Builder(String cpu,String ram){
this.cpu = cpu;
this.ram = ram;
}
public Builder setUsbCount(int usbCount) {
this.usbCount = usbCount;
return this;
}
public Builder setKeyBoard(String keyBoard) {
this.keyBoard = keyBoard;
return this;
}
public Builder setDisplay(String display) {
this.display = display;
return this;
}
//提供build方法返回computer实例
public Computer build(){
return new Computer(this);
}
}
}
参考:https://zhuanlan.zhihu.com/p/58093669