一、定义一个抽象建造者类
二、创建一个产品类
package com.bjpowernode.Factory.builder;
public class Product {
private String buildA;
private String buildB;
private String buildC;
private String buildD;
public String getBuildA() {
return buildA;
}
public void setBuildA(String buildA) {
this.buildA = buildA;
}
public String getBuildB() {
return buildB;
}
public void setBuildB(String buildB) {
this.buildB = buildB;
}
public String getBuildC() {
return buildC;
}
public void setBuildC(String buildC) {
this.buildC = buildC;
}
public String getBuildD() {
return buildD;
}
public void setBuildD(String buildD) {
this.buildD = buildD;
}
@Override
public String toString() {
return "Product{" +
"buildA='" + buildA + ''' +
", buildB='" + buildB + ''' +
", buildC='" + buildC + ''' +
", buildD='" + buildD + ''' +
'}';
}
}
三、创建一个Worker类
package com.bjpowernode.Factory.builder;
public class Worker extends Builder {
private Product product;
public Worker() {
product = new Product();
}
@Override
void buildA() {
product.setBuildA("地基");
System.out.println("地基");
}
@Override
void buildB() {
product.setBuildB("钢筋");
System.out.println("钢筋");
}
@Override
void buildC() {
product.setBuildC("铺电线");
System.out.println("铺电线");
}
@Override
void buildD() {
product.setBuildD("粉刷");
System.out.println("粉刷");
}
@Override
Product getProduct() {
return product;
}
}
四、核心 :创建一个指挥Director类
package com.bjpowernode.Factory.builder;
//指挥核心,负责建造一个工程
public class Director {
public Product build(Builder builder){
//指挥工人按照顺序建造房子
builder.buildA();
builder.buildB();
builder.buildC();
builder.buildD();
return builder.getProduct();
}
}
五、测试
第二种也是类是
服务员自主搭配套餐,用户也可以自己选择
所以相对于第一种少了Director类
指挥用于:建造顺序
这边用户就可以自己随心所欲自由搭配



