【设计模式】第五章:创建型模式-建造者

发布于 2021-01-16 09:02

定义:

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

使用场景:

①、需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。

②、需要生成的产品对象的属性相互依赖,需要指定其生成顺序。

③、对象的创建过程独立于创建该对象的类。在建造者模式中通过引入了指挥者类,将创建过程封装在指挥者类中,而不在建造者类和客户类中。

④、隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。

public class OptimizedBuilderPatternDemo {  public static void main(String[] args) {    Product product = new ConcreteBuilder()        .field1("值1")        .field2("值2")        .field3("值3")        .create();    System.out.println(product);  }}class Product {  private String field1;  private String field2;  private String field3;  //省略getter setter方法  @Override  public String toString() {    return "Product [field1=" + field1 + ", field2=" + field2 + ", field3=" + field3 + "]";  }}interface Builder {  Builder field1(String value);  Builder field2(String value);  Builder field3(String value);  Product create();}class ConcreteBuilder implements Builder {  private Product product = new Product();  public Builder field1(String value) {    System.out.println("在设置field1之前进行复杂的校验逻辑");    product.setField1(value);    return this;  }  public Builder field2(String value) {    System.out.println("在设置field2之前进行复杂的数据格式转化逻辑");    product.setField2(value);    return this;  }  public Builder field3(String value) {    System.out.println("在设置field3之前进行复杂的数据处理逻辑,跟其他对象的数据进行关联");    product.setField3(value);    return this;  }  public Product create() {    return product;  }}

真实场景:

电商业务的订单、发货单、退货单等这些复杂单子的构造。

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材