建造者模式 Builder Pattern
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
用户只需要指定需要建造的类型就可以获得对象,建造过程和细节不需要了解。
public class Course {
private String name;
private String ppt;
private String video;
private String note;
private String homework;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPpt() {
return ppt;
}
public void setPpt(String ppt) {
this.ppt = ppt;
}
public String getVideo() {
return video;
}
public void setVideo(String video) {
this.video = video;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public String getHomework() {
return homework;
}
public void setHomework(String homework) {
this.homework = homework;
}
}
public class CourseBuilder {
Course course = new Course();
public CourseBuilder setName(String name) {
course.setName(name);
return this;
}
public CourseBuilder setPpt(String ppt) {
course.setPpt(ppt);
return this;
}
public CourseBuilder setVideo(String video) {
course.setVideo(video);
return this;
}
public CourseBuilder setNote(String note) {
course.setNote(note);
return this;
}
public CourseBuilder setHomework(String homework) {
course.setHomework(homework);
return this;
}
public Course builder()
{
return course;
}
}
-
1.与抽象工厂模式相比,建造者模式返回一个组装好的完整产品,而抽象工厂模式返回一系列相关的产品,这些产品位于不同的产品等级结构,构成了一个产品族 。
-
2.在抽象工厂模式中,客户端实例化工厂类,然后调用工厂方法获取所需产品对象,而在建造者模式中,客户端可以不直接调用建造者的相关方法,而是通过指挥者类来指导如何生成对象,包括对象的组装过程和建造步骤,它侧重于一步步构造一个复杂对象,返回一个完整的对象 。
-
3.如果将抽象工厂模式看成汽车配件生产工厂,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂,通过对部件的组装可以返回一辆完整的汽车