簡單工廠模式是創建型設計模式中最基礎、最容易理解的一種。它的核心思想正如其名——「簡單」,就像一間只生產固定產品的民間小作坊,或者說是 KFC 的後廚:顧客只需告知想吃漢堡還是炸雞,後廚便會按固定流程製作並交付,完全屏蔽了具體的烹飪細節。
簡單工廠包含三個核心角色:
Food 介面)。Hamburger、Chicken)。KFC 類的靜態方法 getFood())。以下代碼展示如何用簡單工廠模式模擬 KFC 點餐流程:
// 抽象產品:食物介面
interface Food {
void get();
}
// 具體產品:漢堡
class Hamburger implements Food {
public void get() {
System.out.println("漢堡來了");
}
}
// 具體產品:炸雞
class Chicken implements Food {
public void get() {
System.out.println("炸雞來了");
}
}
// 簡單工廠:KFC 後廚
class KFC {
public static Food getFood(String name) {
if ("炸雞".equals(name)) {
return new Chicken();
}
if ("漢堡".equals(name)) {
return new Hamburger();
}
return null;
}
}
// 客戶端測試
public class Test {
public static void main(String[] args) {
Food item1 = KFC.getFood("炸雞");
Food item2 = KFC.getFood("hanbao"); // 輸入錯誤
try {
item1.get(); // 輸出:炸雞來了
item2.get(); // 空指針異常
} catch (NullPointerException e) {
System.out.print("沒有你要的食物");
}
}
}
優點:客戶端與具體產品類解耦,只需知道參數即可獲取對象,降低系統耦合度。
缺點:工廠類集中了所有創建邏輯,違反「開閉原則」;新增產品需修改工廠代碼,擴展性差;靜態工廠方法無法被繼承覆寫。
簡單工廠雖非標準 23 種設計模式之一,但它是理解工廠方法模式、抽象工廠模式的基石,掌握它有助於建立「封裝變化」的設計思維。