首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >车辆类别(不同类型)。最佳设计与实现

车辆类别(不同类型)。最佳设计与实现
EN

Stack Overflow用户
提问于 2014-10-09 11:30:48
回答 1查看 990关注 0票数 0

在解释我的问题之前,我应该先做一些理论.

vehicle来说,我指的是可以通过公路运输货物的所有东西:汽车、货车、卡车、拖车(或者公路列车,我不知道该怎么称呼)、半拖车(也称为铰接式卡车或拖拉机拖车)。

关于汽车、货车和卡车,它们没有问题:它们有一个盘子、一个重量和一个可移动的体积,以及其他数据。

但另外两辆车更复杂。他们可能有一个额外的车牌,和其他额外的数据。特别是:

  • 半挂车(又称牵引车)是一种由道路拖拉机和半挂车组成的复杂车辆。
  • 拖车(又称.)是一个复杂的车辆,由一个驾驶部件(汽车,货车,卡车,.)构成。和一个驱动部件(拖车,手推车附录.)。在欧洲,最多有两个组装部件。

所以我们还要处理半挂车,拖车和大车。

在我的软件中,可以以不同的方式相互组装()。举个例子,我能不能把拖车从拖车里拉出来,只得到一辆卡车和一辆拖车。尽管如此,我还是可以驾驶同一辆卡车,如果兼容的话,可以攻击另一辆不同的拖车。等等..。

在我看来,很明显,我们不可能用一辆一流的交通工具来管理每件事。

,我想知道什么是处理所有的最好方法。起初,我在汽车类中出现了一个枚举,它向我展示了车辆的类型。但当我不得不处理复杂的车辆时,相信它会更复杂.我也想知道这将如何影响软件的其余部分。

起初,我是这样管理车辆类的:

代码语言:javascript
运行
复制
public class Vehicle {

    // kind of
    enum TipoVeicolo {
        AUTO,           // car
        FURGONE,        // van
        AUTOCARRO,      // truck

        /* 

        // for semi-trailer truck:
        TRATTORE_STRADALE   // road tractor
        SEMIRIMORCHIO       // semi-trailer
        AUTOARTICOLATO      // semi-trailer truck

        // for trailer truck:
        RIMORCHIO           // trailer
        AUTOTRENO           // trailer truck
        ...
        */ 
    };

    enum Stato {
        DISPONIBILE,    // Available
        NON_DISPONIBILE,// not available
        IN_VIAGGIO      // on road...
        // ... ?
    }

    private String targa;   // plate
    private String mark;
    private Stato stato;
    private TipoVeicolo tipoVeicolo;

    private float portata;
    private float volume; 

    private short europallet;

    //Date immatricolationDate;
    //String assurance;


    public Vehicle(String targa, TipoVeicolo tipoVeicolo, String mark,  Stato stato, float ptt) {
        this.targa=targa;
        this.tipoVeicolo=tipoVeicolo;
        this.mark=mark;
        this.stato=stato;
        this.ptt=ptt;
    }


    //////////////////////////////////////////////
    // GET and SET methods

    // ...
}

我该怎么处理呢?继承遗产?

EN

回答 1

Stack Overflow用户

发布于 2014-10-09 11:41:05

对我来说可以这样做。首先,您创建了非常通用的车辆类,它基本上有大量的车轮和名称,也许还有其他的东西。然后你把它扩展很多次,制造机动车辆,没有马达的车辆,然后是汽车,卡车等等。

此外,您可以拥有描述某些特殊功能的接口、可移植接口和许多其他接口。通过这种方式,您可以通过检查车辆是否实现了所需的接口来检查其兼容性。

希望能帮上忙。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26277305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档