适用场景:适用于创建对象需要很多步骤,但是步骤的顺序不一定固定。如果一个对象有非常复杂的内部结构(很多属性),把复杂对象的创建和使用分离
public abstract class AbstractCourseBuilder {
public abstract AbstractCourseBuilder baseCourseBuilder(String name, String video, String ppt);
public abstract AbstractCourseBuilder specialCourseBuilder(String name);
public abstract Course builder();
}
public class CourseBuilder extends AbstractCourseBuilder {
Course course = new Course();
@Override
public CourseBuilder baseCourseBuilder(String name, String video, String ppt) {
course.setName(name);
course.setVideo(video);
course.setPpt(ppt);
return this;
}
@Override
public CourseBuilder specialCourseBuilder(String name) {
course.setName(name);
return this;
}
@Override
public Course builder() {
return course;
}
}
public class Course {
private String ppt;
private String name;
private String video;
public String getPpt() {
return ppt;
}
public void setPpt(String ppt) {
this.ppt = ppt;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video;
}
@Override
public String toString() {
return "Course{" +
"ppt='" + ppt + '\'' +
", name='" + name + '\'' +
", video='" + video + '\'' +
'}';
}
}
public class BuilderTest {
public static void main(String[] args) {
AbstractCourseBuilder builder = new CourseBuilder()
.baseCourseBuilder("Zhangsan", "111", "222")
.specialCourseBuilder("lisi");
System.out.println(builder.builder());
}
}
网友评论