建造者模式:
建造者模式主要分为两个角色,一个是Builder建造者,只负责产品的生产,一个是Director指挥者,负责指挥建造者建造的顺序。
代码示例:
/***
* @Author zzz_欢欢欢
*
* 建造者模式
* 例子:lombok的@Builder的简单实现
* 定义:注重产品内部的实现,而工厂模式则注重返回一系列的产品
*/
public class Builder_Main {
public static void main(String[] args) {
Cat build = Cat.builder().veriaty("小菊").color("黄色").weight(new BigDecimal(10)).build();
System.out.println(JSON.toJSONString(build));
}
}
@Data
class Cat{
//品种
private String veriaty;
//颜色
private String color;
//重量
private BigDecimal weight;
//生成建造者
public static Builder builder(){
return new Builder();
}
//建造者对象
public static final class Builder{
private String veriaty;
private String color;
private BigDecimal weight;
public Builder(){}
// return this; 实现链式赋值传参
public Builder veriaty(String veriaty){
this.veriaty = veriaty;
return this;
}
public Builder color(String color){
this.color = color;
return this;
}
public Builder weight(BigDecimal weight){
this.weight = weight;
return this;
}
//此方法可以看作为指挥者 Director 负责进行对象如何建造的具体实现
//this 为建造者 Bulider,不负责建造的顺序以及内部的实现,只负责字段的搬运
public Cat build(){
Cat cat = new Cat();
cat.weight = this.weight;
cat.color = this.color;
cat.veriaty = this.veriaty;
return cat;
}
}
}