如何进行火车组合 - 类 的组合

How to do train composition - compositon of classes

我目前正在为大学做一个火车模拟项目。

这是我的 class 层次结构:

RollingStock
    Coach
        FreightCoach
        PassengerCoach
        SpecialCoach
    Engine
        DieselEngine
        ElectricEngine
        SteamEngine
    Trainset

我的问题:

我创建了一个 class "SharedIdSpace" 来实现此功能。但是我不太确定如何很好地解决这个问题(TreeMap,...,?)。

现在,我的主要问题是我必须实现以下功能:

机车车辆可以组合成列车,组合时必须遵守以下限制条件:

我该如何实施?恐怕我没有什么有用的想法。

我不确定你在问什么,但我会尽量给你一个近似值:

您需要创建一个复合对象,其中每个对象都有一个唯一的 ID 并且需要通过一些验证。

我会实现一个 "StoregeManager" 一个 "ComposerManager" 并在 "RollingStock" 中添加一个抽象验证器方法来验证是否可以添加 vagon。

流程是这样的:

免责声明这是用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 的类名作为参数传递。

希望对你有所帮助。