1. 概述
2. 建造者模式和工厂模式的区别
- 建造者模式强调的是方法的调用顺序;工厂模式注重创建产品;
- 建造者模式可以创建复杂的产品,有各种复杂的步骤;工厂模式创建的产品都是一样的;
- 建造者模式不止要创建出产品,还需要知道由哪些部件组成的;工厂模式只需要成功创建出产品就好了,不需要知道里面的细节;
- 建造者模式若生产不同的产品,可能需要调整生产的步骤顺序;工厂模式不需要关注生产的顺序;
3. 代码解析
@Data
public class Course {
private String name;
private String PPT;
private String article;
private String video;
public Course(CourseBuilder builder) {
this.name = builder.name;
this.PPT = builder.PPT;
this.article = builder.article;
this.video = builder.video;
}
@Data
static class CourseBuilder {
private String name;
private String PPT;
private String article;
private String video;
public CourseBuilder buildCourseName(String name) {
this.name = name;
return this;
}
public CourseBuilder buildCoursePPT(String PPT) {
this.PPT = PPT;
return this;
}
public CourseBuilder buildCourseArticle(String article) {
this.article = article;
return this;
}
public CourseBuilder buildCourseVideo(String video) {
this.video = video;
return this;
}
public Course build() {
return new Course(this);
}
}
}
/**
* 可以指定创建产品的步骤顺序以及步骤.
*/
public class CourseBuilderTest {
public static void main(String[] args) {
Course course = new Course.CourseBuilder()
.buildCourseName("JAVA")
.buildCoursePPT("JAVA-PPT")
.build();
System.out.println(course);
}
}
4. 源码使用
- JDK中的
StringBuilder
和StringBuffer
的append
方法。 - GUAVA的
ImmutableSet
的builder()
的add
等方法。