這是我需要實現它在Java中的問題:Java的建築類設計一個現實世界塞納里奧
汽車可以是汽油車還是柴油車,混合動力汽車被堵住的汽油或柴油但不是兩個。此外,混合動力汽車有能力運行電力,但完全不使用汽油或柴油,並且僅在運行時決定是選擇電力還是其他燃料源(適當時使用汽油或柴油)。
在這裏,我需要用OOP概念來實現,例如,應該調用以汽油型汽油模式運行的混合動力汽車以及應該調用其柴油柴油類運行方法的示例。
我是OOP的新手,我想出了以下設計我知道這是錯誤的,如果任何人可以幫助我請。
我試圖與裝飾設計模式只是糾正我,如果屈尊是錯誤的,上面的場景..
車廂接口
public interface Car {
public void running();
}
汽油汽車類
class PetrolCar implements Car{
public void running() {
System.out.println("Running in Petrol");
}
}
柴油車類
public class DieselCar implements Car{
public void running() {
System.out.println("Running in Diesel");
}
}
摘要混合
public abstract class Hybrid implements Car{
Car car;
public Hybrid(Car car) {
this.car=car;
}
public void running(){
car.running();
}
abstract void hybridRunning();
}
實現混合類
public class HybridCar extends Hybrid{
public HybridCar(Car car) {
super(car);
}
@Override
void hybridRunning() {
System.out.println("Running in Hybrid Mood");
}
}
測試,在運行時,用戶可以選擇是否車是混合動力汽油或柴油混合動力或汽油或柴油...
public class App {
public static void main(String[] args) {
String neededType = "Petrol";
boolean hybrid = true;
if (hybrid) {
Hybrid hCar=null;
if (neededType.equalsIgnoreCase("Petrol")) {
hCar=(Hybrid)new HybridCar(new PetrolCar());
} else if (neededType.equalsIgnoreCase("Diesel")) {
hCar=new HybridCar(new DieselCar());
}
hCar.hybridRunning();
hCar.running();
} else {
Car car=null;
if (neededType.equalsIgnoreCase("Petrol")) {
car=new PetrolCar();
} else if (neededType.equalsIgnoreCase("Diesel")) {
car=new DieselCar();
}
}
}
}
這是正確的嗎有沒有關於OOP最佳實踐的問題 在此先感謝
我會有一個類'汽車'和'enum燃料'與汽油,柴油,液化石油氣,氫,電動EnumSet。例如有石油氣和汽油,或汽油和電力是常見的。 –
@Peter甚至[專有](https://en.wikipedia.org/wiki/Nissan_Leaf)。 –
@ElliottFrisch Solar甚至https://www.worldsolarchallenge.org/ –