建造者模式
定义理解
建造者模式是一种创建型模式,就是将一个复杂对象的构建过程与它的表示分离,构建代表对象创建,表示代表对象行为、方法。
建造者模式和工厂模式非常相似,都具备创建与表示分离的特点。建造者模式唯一区别于工厂模式的是针对复杂对象的创建,如果创建简单对象,使用工厂模式进行创建;如果创建复杂对象,可以考虑使用建造者模式。
类图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xw5Nfi2O-1623509375119)(https://i.loli.net/2021/06/12/osdEY3yrhx1a5cJ.png)]
建造者模式通常写法
-
抽象的建造者
public interface IBuilder { Product build(); }
-
具体建造者
public class ProductBuilder implements IBuilder { private Product product = new Product(); @Override public Product build() { return product; } }
3.产品类
@Data
public class Product {
private String name;
}
- 客户端
public class Client {
public static void main(String[] args) {
IBuilder builder = new ProductBuilder();
Product product = builder.build();
}
}
建造者模式链式写法
public class Client {
public static void main(String[] args) {
Product product = new ProductBuilder().setColor("red")
.setName("li")
.builder();
}
}
@Data
public class Product {
private String color;
private String name;
private Integer size;
}
public class ProductBuilder {
private Product product = new Product();
public ProductBuilder setName(String name) {
product.setName(name);
return this;
}
public ProductBuilder setColor(String color) {
product.setColor(color);
return this;
}
public Product builder() {
return product;
}
}
静态内部类的写法
@Data
public class Product {
private String name;
private String color;
private Integer size;
public static class Builder{
Product product = new Product();
public Builder setName(String name){
product.setName(name);
return this;
}
public Builder setColor(String color){
product.setColor(color);
return this;
}
public Builder setSize(Integer size){
product.setSize(size);
return this;
}
public Product build(){
return product;
}
}
}
public class Client {
public static void main(String[] args) {
final Product product = new Product.Builder().setColor("red").setSize(11)
.build();
}
}