首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 簡單工廠模式:從 KFC 點餐理解設計模式核心原理

     編輯:Java 綜合教學

Java 簡單工廠模式:從 KFC 點餐理解設計模式核心原理

簡單工廠模式是創建型設計模式中最基礎、最容易理解的一種。它的核心思想正如其名——「簡單」,就像一間只生產固定產品的民間小作坊,或者說是 KFC 的後廚:顧客只需告知想吃漢堡還是炸雞,後廚便會按固定流程製作並交付,完全屏蔽了具體的烹飪細節。

模式結構與角色

簡單工廠包含三個核心角色:

  • 抽象產品角色:定義產品的公共介面(如 Food 介面)。
  • 具體產品角色:實現抽象產品介面的實體類(如 Hamburger、Chicken)。
  • 工廠角色:根據傳入參數決定實例化哪個具體產品(如 KFC 類的靜態方法 getFood())。

代碼實戰:KFC 點餐系統

以下代碼展示如何用簡單工廠模式模擬 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 種設計模式之一,但它是理解工廠方法模式、抽象工廠模式的基石,掌握它有助於建立「封裝變化」的設計思維。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved