public class Course {
/** 视频 */
private String video;
/** 手札 */
private String article;
/** PPT文档 */
private String ppt;
/** 提问&&回答 */
private String qa;
/** 附件 */
private String attach;
public Course(){
}
public Course(CourseBuilder builder){
this.video = builder.video;
this.article = builder.article;
this.ppt = builder.ppt;
this.qa = builder.qa;
this.attach = builder.attach;
}
@Override
public String toString() {
return "Course{" +
"video='" + video + '\'' +
", article='" + article + '\'' +
", ppt='" + ppt + '\'' +
", qa='" + qa + '\'' +
", attach='" + attach + '\'' +
'}';
}
/**
* 静态内部类
*/
public static class CourseBuilder {
/** 视频 */
private String video;
/** 手札 */
private String article;
/** PPT文档 */
private String ppt;
/** 提问&&回答 */
private String qa;
/** 附件 */
private String attach;
public CourseBuilder buildVideo(String video){
this.video = video;
return this;
}
public CourseBuilder buildArticle(String article){
this.article = article;
return this;
}
public CourseBuilder buildPpt(String ppt){
this.ppt = ppt;
return this;
}
public CourseBuilder buildQa(String qa){
this.qa = qa;
return this;
}
public CourseBuilder buildAttach(String attach){
this.attach = attach;
return this;
}
public Course builder(){
Course course = new Course(this);
return course;
}
}
}
这里在每个buildXXX()方法最后添加 return this;用以支持链式调用
调用
public class Main {
public static void main(String[] args) {
System.out.println("建造者模式(链式调用)");
Course course = new Course.CourseBuilder()
.buildArticle("建造者模式")
.buildAttach("随书源代码")
.buildPpt("手札PPT文档")
.buildVideo("讲解视频")
.buildQa("问题解答")
.builder();
System.out.println(course);
}
}
执行结果
建造者模式
Course{video='讲解视频', article='建造者模式', ppt='手札PPT文档', qa='问题解答', attach='随书源代码'}