对于为客户

时间:2016-02-28 21:15:46

标签: java interface

我正在努力定义一些系统,并且混淆了应该如何设计API并将其提供给外部客户端。

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

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

为客户提供界面吗?
  1. 以非规范化方式的所有属性,以便客户端不需要 关注该资产属于Land或Air派生类?在创作中 它可能没问题,但客户必须在检索时检查它 至少
  2. 我应该允许客户端像LandVehicle一样直接创建Leaf类 并将其传递给我的服务?如果是这样,那么客户将会 需要查询服务以查找哪个assetType属于哪个 派生班。
  3. 我相信第一种方法,因为客户不应该为车辆的系统实施而烦恼,让系统决定应该创建哪种类型。

    请提供任何建议。

1 个答案:

答案 0 :(得分:0)

  1. 准备一个包含土地,空气等车辆类型的枚举
    1. 准备一个界面,该界面具有所有类型车辆的所有共同属性。
    2. 准备一个扩展界面的类,并确保接受枚举以定义消费者请求的车辆类型。
    3. 现在使用您传递的车辆类型,您可以创建实例并返回界面。
    4. 客户端并使用枚举类型并相应地对其进行类型化,并在需要时调用该类的特定方法,或者可以在接口中使用direct方法而无需进行类型转换。