模擬汽車工廠生產大卡車、大客車、小汽車、跑車等車型,不同車型售價不同,要求運用工廠模式,體現接口、繼承、多態、封裝等 OOP 核心概念。
public interface ICar {
void price(); // 展示價格
String getName(); // 獲取車型名稱
}
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 "跑車"; }
}
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);
}
}
}
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`,每種車型對應一個工廠實現類,符合開閉原則。