【设计模式】第五章:创建型模式-建造者
发布于 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 我们将第一时间删除。
相关素材