设计API Java

时间:2018-08-29 07:24:59

标签: java rest api java-8

我有一个处理订单的API。

OrderResult OrderProcessor.process(OrderRequest req) 

我还有一个端点,用户可以在其中发送请求并获取结果。我被要求支持不同的OrderType。

现在这些订单类型可能意味着不同的OrderRequest并可能具有不同的OrderResult。

关于好的设计,我应该为每个不同的订单提供单独的方法

OrderResultABC OrderProcessor.process(OrderRequestABC req) 
OrderResultXYZ OrderProcessor.process(OrderRequestXYZ req) 

然后提供端点。或者我应该使用抽象方法来提供一种方法,然后在运行时以不同的方式返回返回类型

AbstractOrderResult OrderProcessor.process(AbstractOrderRequest req) 

2 个答案:

答案 0 :(得分:2)

我认为策略模式将适合该问题,您需要关闭代码以进行修改并打开以进行扩展,这意味着您可以添加新的订单类型,但是当您要更改现有订单类型的功能时,它不应影响其他现有订单类型。 您应该使用基于接口的设计。

You need 3 interfaces

    1.OrderResult
    2.OrderRequest
    3.OrderProcessor

每种功能都需要单独的订单处理程序类,以便它们足够独立。

引用:https://en.wikipedia.org/wiki/Strategy_pattern

答案 1 :(得分:1)

另一种方法是外观模式。这种结构模式使用接口来隐藏复杂性。一个接口的用法,该接口由多个其他具体类实现。

这里是示例:

  • 订单-界面
  • OrderProcesorABC-类
  • OrderProcesorXYZ-类

OrderProcesorABC和OrderProcesorXYZ都实现了Orders接口。

下一步,名为OrderMaker的外观类将使用具体的类将调用委派给这些类。

有关更多信息,请参见this link in tutorials point