我有一个处理订单的 API。
OrderResult OrderProcessor.process(OrderRequest req)
我还有一个端点,用户可以在其中发送请求并获取结果。我被要求支持不同的订单类型。
现在这些订单类型可能意味着不同的OrderRequest并且可能有不同的OrderResult。
就良好的设计而言,我应该为每个不同的订单提供单独的方法
OrderResultABC OrderProcessor.process(OrderRequestABC req)
OrderResultXYZ OrderProcessor.process(OrderRequestXYZ req)
然后也提供端点。或者我应该使用抽象并提供一种方法,然后返回类型将在运行时以不同的方式返回
AbstractOrderResult OrderProcessor.process(AbstractOrderRequest req)
最佳答案
我认为策略模式可以解决这个问题,您希望您的代码关闭以进行修改并开放以进行扩展,这意味着您可以添加新的订单类型,但是当您想要更改现有订单类型的功能时,它不应影响其他现有订单类型。 您应该使用基于界面的设计。
You need 3 interfaces
1.OrderResult
2.OrderRequest
3.OrderProcessor
您需要为每个功能提供单独的订单处理器类,以便它们足够独立。
关于java - 设计Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071753/