建造者模式感觉最多的应该应该就是链式编程了吧,使得原本比较乱的代码变得很清爽
主要用法:
静态内部类中公有方法 返回构造对象, 构造对象的构造方法参数为Builder类
package com.example.demo.designpattern.build.builder.chaincoding;
public class Product {
private String partA;
private String partB;
private String partC;
@Override
public String toString() {
return "Product{" +
"partA='" + partA + '\'' +
", partB='" + partB + '\'' +
", partC='" + partC + '\'' +
'}';
}
//私有构造方法
private Product(Builder builder){
this.partA = builder.partA;
this.partB = builder.partB;
this.partC = builder.partC;
};
public String getPartA() {
return partA;
}
public void setPartA(String partA) {
this.partA = partA;
}
public String getPartB() {
return partB;
}
public void setPartB(String partB) {
this.partB = partB;
}
public String getPartC() {
return partC;
}
public void setPartC(String partC) {
this.partC = partC;
}
public static class Builder{
private String partA; // 假设part是必须的
private String partB; // 假设part是可选
private String partC; // 假设part是可选的
//使用构建者创建Phone对象
public Product build () {
return new Product(this);
}
public Builder setPartA(String partA) {
this.partA = partA;
return this;
}
public Builder setPartB(String partB) {
this.partB = partB;
return this;
}
public Builder setPartC(String partC) {
this.partC = partC;
return this;
}
}
}
package com.example.demo.designpattern.build.builder.chaincoding;
public class ChainCodingDemo {
public static void main(String[] args) {
//创建对象 通过构建者对象获对象
Product product = new Product.Builder()
.setPartA("A")
.setPartB("B")
.setPartC("C").build();
System.out.println(product.toString());
}
}
最常用的Lombok中我们只需要再entity实体类上加上@Builder注解 无参构造器和有参构造器也要加上,否则会出现问题