public class Car {
private String color;
private String licensePlate;
private String brand;
public void setColor(String color) {
this.color = color;
}
public void setLicensePlate(String licensePlate) {
this.licensePlate = licensePlate;
}
public void setBrand(String brand) {
this.brand = brand;
}
@Override
public String toString() {
return "Car{" +
"color='" + color + '\'' +
", licensePlate='" + licensePlate + '\'' +
", brand='" + brand + '\'' +
'}';
}
}
然后创建汽车构建实现类
public class CarBuilder implements Builder {
Car car;
public CarBuilder() {
this.car = new Car();
}
@Override
public void buildColor(String color) {
car.setColor(color);
}
@Override
public void buildLicensePlate(String licensePlate) {
car.setLicensePlate(licensePlate);
}
@Override
public void buildBrand(String brand) {
car.setBrand(brand);
}
@Override
public Car build() {
return car;
}
}
最后创建产品组装类
public class Director {
Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct(String color, String licensePlate, String brand) {
builder.buildColor(color);
builder.buildLicensePlate(licensePlate);
builder.buildBrand(brand);
}
}
一个简单的Builder构建者就完成了,我们来测试一下
Builder builder = new CarBuilder();
Director director =new Director(builder);
director.construct("red", "A88888", "Ferrari");
System.out.println(builder.build().toString());
public class Ferrari {
private String color;
private String licensePlate;
private String brand;
public void setColor(String color) {
this.color = color;
}
public void setLicensePlate(String licensePlate) {
this.licensePlate = licensePlate;
}
public void setBrand(String brand) {
this.brand = brand;
}
public static class Builder{
Ferrari ferrari;
public Builder(){
ferrari = new Ferrari();
}
public Builder setColor(String color){
ferrari.setColor(color);
return this;
}
public Builder setLicensePlate(String licensePlate) {
ferrari.setLicensePlate(licensePlate);
return this;
}
public Builder setBrand(String brand){
ferrari.setBrand(brand);
return this;
}
public Ferrari build(){
return ferrari;
}
}
@Override
public String toString() {
return "Car{" +
"color='" + color + '\'' +
", licensePlate='" + licensePlate + '\'' +
", brand='" + brand + '\'' +
'}';
}
}
测试一下
// Call Chaining
Ferrari ferrari = new Ferrari.Builder()
.setBrand("Ferrari")
.setColor("Red")
.setLicensePlate("B88888")
.build();
System.out.println(ferrari.toString());