建造者模式屬於創建型模式,定義為:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。當物件擁有大量可選參數、構建步驟固定但細節多變時,它是最佳選擇。

class Product {
private String name;
private String type;
public void showProduct() {
System.out.println("名稱:" + name);
System.out.println("型號:" + type);
}
public void setName(String name) { this.name = name; }
public void setType(String type) { this.type = type; }
}
abstract class Builder {
public abstract void setPart(String arg1, String arg2);
public abstract Product getProduct();
}
class ConcreteBuilder extends Builder {
private Product product = new Product();
public Product getProduct() { return product; }
public void setPart(String arg1, String arg2) {
product.setName(arg1);
product.setType(arg2);
}
}
public class Director {
private Builder builder = new ConcreteBuilder();
public Product getAProduct() {
builder.setPart("寶馬汽車", "X7");
return builder.getProduct();
}
public Product getBProduct() {
builder.setPart("奧迪汽車", "Q5");
return builder.getProduct();
}
}
public class Client {
public static void main(String[] args) {
Director director = new Director();
Product p1 = director.getAProduct(); p1.showProduct();
Product p2 = director.getBProduct(); p2.showProduct();
}
}
兩者極似,差別在於導演類:
口訣:產品建造「很複雜」用工廠,「更複雜」用建造者。
建造者模式將「構建過程」與「具體表示」解耦,適用於參數多、構建步驟固定、需靈活組合的場景。配合導演類,實現「同一構建流程,不同產品輸出」。