一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
常用的 JAVA 中的 StringBuilder。
与工厂模式的区别是
工厂模式直接创建好产品,不需关注创建的过程。建造者模式更加关注与零件装配的顺序装配内容。
工厂模式如去咖啡店买一杯咖啡,点一杯拿铁,服务员按照工厂工序制作一杯拿铁。
构建模式好比自己只做一杯咖啡,用多少咖啡,放多少奶,加多少糖可以自由控制构建的数据,更灵活多变。
swagger中构建docket对象也是build.
public Docket defaultApi () {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.apis(RequestHandlerSelectors.basePackage("com.xx"))
.paths(PathSelectors.any())
.build();
}
Lombok
@Builder`注解开启对象构建方法。
@Builder
public class Student {
private int stuStatus = 1;
}
//使用
Student student = Student.builder().stuStatus(2).build();
springboot 中的builder
示例SpringApplicationBuilder
public class SpringApplicationBuilder {
private final SpringApplication application;
public SpringApplicationBuilder child(Class<?>... sources) {}
}
使用Builder
new SpringApplicationBuilder()
.sources(Parent.class)
.child(Application.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
它是新增了一个 XxxBuilder 类:SpringApplicationBuilder,然后在 SpringApplicationBuilder 中新增了个 SpringApplication 的成员变量,然后再新增变量对应的方法。
总结:
构建模式通过生成一个Builder类内置了构建对象,通过链式调用简化了代码,省去了重复的对象调用。