版权声明:转载请注明出处: https://blog.csdn.net/qq_21687635/article/details/85048128
模式定义
生成器模式将一个复杂对象的构建与它的表示分离,封装了一个产品的构造过程,并允许按步骤构造。
下图是该模式的类图:
一个生动的例子
Product类:
public class Vacation {
private int day;
private String hotel;
private String ticket;
private String specialEvent;
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public String getHotel() {
return hotel;
}
public void setHotel(String hotel) {
this.hotel = hotel;
}
public String getTicket() {
return ticket;
}
public void setTickets(String ticket) {
this.ticket = ticket;
}
public String getSpecialEvent() {
return specialEvent;
}
public void setSpecialEvent(String specialEvent) {
this.specialEvent = specialEvent;
}
@Override
public String toString() {
return "Vacation [day=" + day + ", hotel=" + hotel + ", ticket=" + ticket + ", specialEvent=" + specialEvent
+ "]";
}
}
Builder抽象类:
public abstract class AbstractBuilder {
protected Vacation vacation;
public Vacation getVocationPlanner() {
return vacation;
}
public AbstractBuilder() {
vacation = new Vacation();
}
public abstract void buildDay(int day);
public abstract void addHotel(String hotel);
public abstract void addTicket(String ticket);
public abstract void addSpecialEvent(String specialEvent);
}
Builder实现类:
class VacationBuilder extends AbstractBuilder {
@Override
public void buildDay(int day) {
vacation.setDay(day);
}
@Override
public void addHotel(String hotel) {
vacation.setHotel(hotel);
}
@Override
public void addTicket(String ticket) {
vacation.setTickets(ticket);
}
@Override
public void addSpecialEvent(String specialEvent) {
vacation.setSpecialEvent(specialEvent);
}
}
客户端类:
public class BuilderTest {
public static void main(String[] args) {
AbstractBuilder vacationBuilder = new VacationBuilder();
vacationBuilder.buildDay(3);
vacationBuilder.addHotel("hotel");
vacationBuilder.addSpecialEvent("specialEvent");
vacationBuilder.addTicket("ticket");
Vacation vocationPlanner = vacationBuilder.getVocationPlanner();
System.out.println(vocationPlanner);
}
}
参考
- Head First 设计模式[书籍]
- 百度百科之建造者模式
- 简书之生成器模式