[英]How to do train composition - compositon of classes
我目前正在為大學做一個火車模擬項目。
這是我的 class 層次結構:
RollingStock
Coach
FreightCoach
PassengerCoach
SpecialCoach
Engine
DieselEngine
ElectricEngine
SteamEngine
Trainset
我的問題:
我創建了一個 class “SharedIdSpace”來實現這個功能。 但我不太確定如何很好地解決這個問題(TreeMap,...,?)。
現在,我的主要問題是我必須實現以下功能:
"機車車輛可以組合成火車。組合時必須遵守以下限制:
我該如何實施? 恐怕我沒有什么有用的主意。
我不確定你在問什么,但我會盡量給你我的近似值:
您需要創建一個組合 object,其中每個 object 都有一個唯一的 ID,並且需要通過一些驗證。
我將實現一個“StoregeManager”和一個“ComposerManager”,並在“RollingStock”中添加一個抽象驗證器方法來驗證是否可以添加 vagon。
流程將是這樣的:
DISCLAIMER這是在Java寫的,但是用notepad++,請不要檢查sintaxis。
RollingStock freightCoach = StoregeManager.getFreightCoach();
RollingStock specialCoach = StoregeManager.getSpecialCoach();
RollingStock dieselEngine = StoregeManager.getDieselEngine();
// Check if they are null or throw an exception if has no more elements. Maybe from BBDD or from where you want
Composer.compone()
.add(dieselEngine)
.add(freightCoach)
.add(specialCoach)
.build()
在 componer 內部,是這樣的:
public class Composer {
private StoregeManager storeManager; //Injected or initialized, as you want.
private static Train train;
public Composer build(){
train = new Train;
return this;
}
public Composer add(RollingStock rs) {
if(rs.isValid(train))
train.add(rs);
return this;
}
public RollingStock[] build() {
storageManager.ckeckTrain(train);
return train;
}
}
如果您需要另一個近似值來解決您的問題,您可以將存儲放在 Composer 中並將 vagon 的類名作為參數傳遞。
我希望這可以幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.