一. 类型
创建型模式
二. 定义
建造者模式 是将一个复杂对象的构建与他的表示分离, 使得同样的构建过程可以创建不同的表示.
特征: 用户只需要指定需要创建的类型就可以获得对象, 建造过程及细节不需要了解.
三. 优缺点
优点
封装性好, 创建和使用分离.
扩展性好, 建造类之间独立、一定程度上解耦.
缺点
产生多余的 Builder 对象
产品内部发生改变, 建造者都要修改, 成本较高
四. 简单写法
/**
* 实体类
*/
@Data
public class Course {
private String name;
private String ppt;
private String video;
private String note;
private String homework;
@Override
public String toString() {
return "CourseBuilder{" +
"name='" + name + '\'' +
", ppt='" + ppt + '\'' +
", video='" + video + '\'' +
", note='" + note + '\'' +
", homework='" + homework + '\'' +
'}';
}
}
/**
* 建造者类
*/
public class CourseBuilder{
private Course course = new Course();
public CourseBuilder addName(String name) {
course.setName(name);
return this;
}
public CourseBuilder addPPT(String ppt) {
course.setPpt(ppt);
return this;
}
public CourseBuilder addVideo(String video) {
course.setVideo(video);
return this;
}
public CourseBuilder addNote(String note) {
course.setNote(note);
return this;
}
public CourseBuilder addHomework(String homework) {
course.setHomework(homework);
return this;
}
public Course build() {
return course;
}
}
测试类
public class Test {
public static void main(String[] args) {
CourseBuilder builder = new CourseBuilder();
builder.addName("设计模式")
.addPPT("【PPT课件】")
.addVideo("【回放视频】")
.addNote("【课堂笔记】")
.addHomework("【课后作业】");
System.out.println(builder.build());
}
}
执行结果
-------------------------------------------------------------------------------------------------------------------------------
CourseBuilder{name='设计模式', ppt='【PPT课件】', video='【回放视频】', note='【课堂笔记】', homework='【课后作业】'}
-------------------------------------------------------------------------------------------------------------------------------