題目如下:

源碼附上:
package 真題;
public class test_2017_low {
public static void main(String[] args) {
Waiter waiter = new Waiter();
PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder();
waiter.setPizzaBuilder(hawaiian_pizzabuilder); //空4 給waiter設定建立器
waiter.construct();//空5 建構
System.out.println("pizza: " + waiter.getPizza());
}
}
class Pizza {
private String parts;
public void setParts(String parts) {
this.parts = parts;
}
@Override
public String toString() {
return this.parts;
}
}
abstract class PizzaBuilder {
protected Pizza pizza;
public Pizza getPizza() {
return pizza;
}
public void creatrNewPizza() {
pizza = new Pizza();
}
public abstract void buildParts(); //填空1 建立抽象方法
}
class HawaiianPizzaBuilder extends PizzaBuilder {
@Override
public void buildParts() {
pizza.setParts("cross + mild + ham&pineapple");
}
}
class SpicyPizzaBuilder extends PizzaBuilder {
@Override
public void buildParts() {
pizza.setParts("pan baked + hot + pepperoni&salami");
}
}
class Waiter {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pizzaBuilder) {
this.pizzaBuilder = pizzaBuilder; //空二 設定建構器
}
public Pizza getPizza() {
return pizzaBuilder.getPizza();
}
public void construct() {
pizzaBuilder.creatrNewPizza();
pizzaBuilder.buildParts();//空三
}
}
運作結果: