Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 困惑于为客户机定义接口_Java_Interface - Fatal编程技术网

Java 困惑于为客户机定义接口

Java 困惑于为客户机定义接口,java,interface,Java,Interface,我正在定义一些系统,对API应该如何设计和提供给外部客户感到困惑 我将首先解释一下内部系统的实现。有由系统管理的车辆。车辆定义为基本类车辆和衍生类车辆,如陆地车辆或空中车辆。陆上车辆中存在一些在空中车辆中不需要的属性。此外,基类中可能有一些属性,如“VehicleType”,其值由派生类控制,这意味着陆地车辆可以有Car,但Ari车辆可以有“Boeing”等类型 我需要为客户提供API来创建/检索车辆。我应该为客户提供接口吗 所有属性都以非规范化的方式,这样客户端就不需要 是否关心该资产属于陆上

我正在定义一些系统,对API应该如何设计和提供给外部客户感到困惑

我将首先解释一下内部系统的实现。有由系统管理的车辆。车辆定义为基本类车辆和衍生类车辆,如陆地车辆或空中车辆。陆上车辆中存在一些在空中车辆中不需要的属性。此外,基类中可能有一些属性,如“VehicleType”,其值由派生类控制,这意味着陆地车辆可以有Car,但Ari车辆可以有“Boeing”等类型

我需要为客户提供API来创建/检索车辆。我应该为客户提供接口吗

  • 所有属性都以非规范化的方式,这样客户端就不需要 是否关心该资产属于陆上或空中衍生类别?创作中 可以,但客户必须在 至少
  • 我应该允许客户端直接创建像LandVehicle这样的叶类吗 把它传给我?如果是这样的话,那么客户将 需要查询服务以查找哪个资产类型属于哪个资产类型 派生类
  • 我相信第一种方法,因为客户不应该担心车辆的系统实现,而是让系统决定应该创建哪种类型

    请提供任何建议

  • 准备一份包含陆上、空中等车辆类型的枚举
  • 准备一个接口,该接口具有各种车辆的所有通用属性
  • 准备一个扩展接口的类,并确保接受枚举以定义消费者请求的车辆类型
  • 现在,使用传递的车辆类型,您可以创建实例并返回接口
  • 客户端,并相应地使用枚举类型和类型转换,并在需要时调用类的特定方法,或者可以在接口中使用直接方法而无需类型转换

  • 谢谢Sambi的回复。我知道您建议添加另一个枚举来标识叶类(陆地/空中),这将有助于客户端在检索时使用正确的叶类。但它并没有解决创造的问题。因为这些枚举(用于识别叶类)也将取决于车辆类型,并且只有服务部门知道。我想你是在建议第二种方法。