首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 工廠模式實戰:汽車工廠生產不同車型並計算價格

     編輯:程式設計疑難解答

需求分析

模擬汽車工廠生產大卡車、大客車、小汽車、跑車等車型,不同車型售價不同,要求運用工廠模式,體現接口、繼承、多態、封裝等 OOP 核心概念。

設計結構

1. 產品接口

public interface ICar {
    void price(); // 展示價格
    String getName(); // 獲取車型名稱
}

2. 具體產品類

public class Truck implements ICar {
    @Override public void price() { System.out.println("大卡車 售價:1000 萬"); }
    @Override public String getName() { return "大卡車"; }
}

public class Coach implements ICar {
    @Override public void price() { System.out.println("大客車 售價:2000 萬"); }
    @Override public String getName() { return "大客車"; }
}

public class SUV implements ICar {
    @Override public void price() { System.out.println("SUV 售價:40 萬"); }
    @Override public String getName() { return "SUV"; }
}

public class SportsCar implements ICar {
    @Override public void price() { System.out.println("跑車 售價:150 萬"); }
    @Override public String getName() { return "跑車"; }
}

3. 工廠類(簡單工廠模式)

public class CarFactory {
    public static final int TYPE_TRUCK = 1;
    public static final int TYPE_COACH = 2;
    public static final int TYPE_SUV = 3;
    public static final int TYPE_SPORTS = 4;

    public static ICar createCar(int type) {
        switch (type) {
            case TYPE_TRUCK:  return new Truck();
            case TYPE_COACH:  return new Coach();
            case TYPE_SUV:    return new SUV();
            case TYPE_SPORTS: return new SportsCar();
            default:
                throw new IllegalArgumentException("未知車型類型: " + type);
        }
    }
}

4. 客戶端測試

public class Main {
    public static void main(String[] args) {
        int[] types = {1, 2, 3, 4};
        for (int type : types) {
            ICar car = CarFactory.createCar(type);
            System.out.print("生產: " + car.getName() + " -> ");
            car.price();
        }
    }
}

進階:工廠方法模式

若需擴展性更強,可定義工廠接口 `ICarFactory`,每種車型對應一個工廠實現類,符合開閉原則。

核心知識點總結

  • 接口:定義行為規範(`ICar`)。
  • 繼承/實現:具體車型實現接口。
  • 多態:父類引用指向子類對象(`ICar car = new Truck()`)。
  • 封裝:價格邏輯封裝在各車型內部。
  • 工廠模式:將對象創建邏輯集中管理,解耦客戶端與具體類。

擴展建議

  • 增加車型屬性(顏色、引擎、配置)通過構造函數或 Builder 模式注入。
  • 引入枚舉替代魔術數字常量。
  • 結合 Spring IOC 容器管理 Bean 創建,實現真正的依賴注入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved