建造者模式 Builder Pattern
- 属于创建型模式
- 是将一个复杂对象的构建与它的标识分离,使得同样的构建过程可以创建不同的表示
- 关键点:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解
实现 demo
需要构建的对象
@Data
public class Course {
private String name;
private String ppt;
private String video;
private String note;
private String homework;
}
构造者
public class CourseBuilder {
private Course course = new Course();
public CourseBuilder name(String name) {
course.setName(name);
return this;
}
public CourseBuilder ppt(String ppt) {
course.setPpt(ppt);
return this;
}
public CourseBuilder video(String video) {
course.setVideo(video);
return this;
}
public CourseBuilder note(String note) {
course.setNote(note);
return this;
}
public CourseBuilder homework(String homework) {
course.setHomework(homework);
return this;
}
static CourseBuilder builder(){
return new CourseBuilder();
}
public Course build() {
return course;
}
}
测试及结果
public class Test {
public static void main(String[] args) {
Course course = CourseBuilder.builder()
.name("name")
.ppt("ppt")
.video("video")
.note("note")
.homework("homework")
.build();
System.out.println(course);
}
}
在源码中的应用
-
StringBuilder
-
Mybatis-Plus
-
Spring
https://www.bilibili.com/video/BV1nZ4y1i7tn?p=11
总结
优点
- 封装性好,创建与使用分离
- 扩展性好,建造类之间独立,一定程度上解耦
建造者和工厂模式的区别
- 工厂模式只需要把对象创建出来,而建造者模式需要注意创建需要哪些部件组成
- 建造者模式根据建造过程的不一样,最终的对象部件组成也不一样