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

Java 簡單工廠模式完整實作指南

     編輯:Java 相關知識

簡介

簡單工廠模式(Simple Factory Pattern)屬於創建型設計模式之一,適用於業務邏輯相對單純、產品種類較少且固定的場景。它透過一個工廠類根據傳入參數決定實例化哪個具體產品類,將物件建立的邏輯封裝起來,讓客戶端無需關心具體建立細節。本文將以汽車製造為例,完整展示從介面定義到測試驗證的完整程式碼結構。

核心角色與類別設計

1. 抽象產品角色:ICar 介面

定義所有具體產品必須實作的共同行為契約。

package org.verphen.simpleFactory;

/**
 * 抽象產品角色:汽車介面
 * 定義汽車的基本操作:啟動與停止
 */
public interface ICar {
    void run();  // 汽車啟動
    void stop(); // 汽車停止
}

2. 具體產品角色:各品牌汽車實作

實作 ICar 介面,每個類別代表一種具體產品。

// Benz.java - 奔馳汽車
package org.verphen.simpleFactory;

public class Benz implements ICar {
    @Override
    public void run() {
        System.out.println("奔馳啟動");
    }
    @Override
    public void stop() {
        System.out.println("奔馳停止");
    }
}

// Ferrari.java - 法拉利汽車
package org.verphen.simpleFactory;

public class Ferrari implements ICar {
    @Override
    public void run() {
        System.out.println("法拉利啟動");
    }
    @Override
    public void stop() {
        System.out.println("法拉利停止");
    }
}

// Jaguar.java - 捷豹汽車
package org.verphen.simpleFactory;

public class Jaguar implements ICar {
    @Override
    public void run() {
        System.out.println("捷豹啟動");
    }
    @Override
    public void stop() {
        System.out.println("捷豹停止");
    }
}

3. 工廠角色:SimpleFactory 類別

核心邏輯所在,靜態工廠方法根據字串參數回傳對應的產品實例。

package org.verphen.simpleFactory;

/**
 * 簡單工廠類別
 * 透過靜態方法根據類型字串建立對應的汽車實例
 */
public class SimpleFactory {
    /**
     * 工廠方法:根據車型名稱回傳對應的汽車實例
     * @param carType 車型名稱(不分大小寫)
     * @return ICar 介面實例,找不到對應類型回傳 null
     */
    public static ICar driveCar(String carType) {
        if ("Benz".equalsIgnoreCase(carType)) {
            return new Benz();
        } else if ("Ferrari".equalsIgnoreCase(carType)) {
            return new Ferrari();
        } else if ("Jaguar".equalsIgnoreCase(carType)) {
            return new Jaguar();
        }
        return null;
    }
}

4. 測試驗證:SimpleFactoryTest 類別

示範如何使用工廠建立物件並呼叫方法。

package org.verphen.simpleFactory;

/**
 * 簡單工廠模式測試類別
 */
public class SimpleFactoryTest {
    public static void main(String[] args) {
        // 透過工廠建立捷豹汽車實例
        ICar car = SimpleFactory.driveCar("Jaguar");
        car.run();  // 輸出:捷豹啟動
        car.stop(); // 輸出:捷豹停止
        
        // 也可測試其他車型
        // ICar car = SimpleFactory.driveCar("Benz");
        // ICar car = SimpleFactory.driveCar("Ferrari");
    }
}

模式優缺點分析

優點

  • 封裝性佳:客戶端只需知道傳入參數,無需知曉具體建立邏輯
  • 程式碼集中:物件建立邏輯集中在工廠類,便於維護與修改
  • 簡單易懂:結構清晰,適合初學者理解設計模式基本概念

缺點

  • 擴充性差:新增產品類型需修改工廠類原始碼,違反開放封閉原則
  • 職責過重:工廠類集中所有建立邏輯,類別膨脹風險高
  • 靜態方法限制:無法透過繼承覆寫工廠方法,靈活度較低

適用場景與最佳實務

簡單工廠模式最適合:產品種類較少且穩定、客戶端只需傳入參數即可獲得產品、不希望客戶端依賴具體類別的專案。實務上若預期產品類型頻繁擴充,建議改用工廠方法模式或抽象工廠模式以符合開放封閉原則。

總結

簡單工廠模式雖非標準 GoF 23 種設計模式之一,但作為工廠模式家族的入門基礎,其核心思想——「將物件建立與使用分離」——貫穿所有創建型模式。理解本模式有助於進階學習更彈性的工廠方法與抽象工廠模式。

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