有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

rest设计API Java

我有一个处理订单的API

OrderResult OrderProcessor.process(OrderRequest req) 

我还有一个端点,用户可以在这里发送请求并获得结果。我被要求支持不同的订单类型

现在,这些订单类型可能意味着不同的OrderRequest,也可能有不同的OrderResult

就良好的设计而言,我应该为每个不同的订单提供不同的方法吗

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

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

AbstractOrderResult OrderProcessor.process(AbstractOrderRequest req) 

共 (2) 个答案

  1. # 1 楼答案

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

    You need 3 interfaces
    
        1.OrderResult
        2.OrderRequest
        3.OrderProcessor
    

    每个功能都需要单独的订单处理器类,以便它们足够独立

    参考:https://en.wikipedia.org/wiki/Strategy_pattern

  2. # 2 楼答案

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

    下面是一个例子:

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

    OrderProcesorABC和OrderProcesorXYZ都实现了Orders接口

    在下一步中,名为OrderMaker的facade类将使用具体类将调用委托给这些类

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