java - 设计Java API

标签 java rest api java-8

我有一个处理订单的 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

您需要为每个功能提供单独的订单处理器类,以便它们足够独立。

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

关于java - 设计Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071753/

相关文章:

json - RESTful Web 服务 url html 与 json

iPhone 接近传感器

java - 无法使用 Spring 和 Quartz 发送电子邮件

java - 如何使用 jSTL 从 url 获取一些值

spring - 在同一个 Controller 方法中拥有 @RequestBody 和 HttpServletRequest

json - Django Rest框架: Output in JSON to the browser by default

apache - 我该如何开发一个程序来让Apache将错误日志发送到Web API?

java - 使用 RichFaces 下载文件

java - Java 中的 C++ 模板?

java - Spring Rest RequestMethod.GET 返回 400 Bad Request for @RequestParam required=true 丢失时