我有一个处理订单的API。
OrderResult OrderProcessor.process(OrderRequest req)
我还有一个端点,用户可以在其中发送请求并获取结果。我被要求支持不同的OrderType。
现在这些订单类型可能意味着不同的OrderRequest并可能具有不同的OrderResult。
关于好的设计,我应该为每个不同的订单提供单独的方法
OrderResultABC OrderProcessor.process(OrderRequestABC req)
OrderResultXYZ OrderProcessor.process(OrderRequestXYZ req)
然后提供端点。或者我应该使用抽象方法来提供一种方法,然后在运行时以不同的方式返回返回类型
AbstractOrderResult OrderProcessor.process(AbstractOrderRequest req)
答案 0 :(得分:2)
我认为策略模式将适合该问题,您需要关闭代码以进行修改并打开以进行扩展,这意味着您可以添加新的订单类型,但是当您要更改现有订单类型的功能时,它不应影响其他现有订单类型。 您应该使用基于接口的设计。
You need 3 interfaces
1.OrderResult
2.OrderRequest
3.OrderProcessor
每种功能都需要单独的订单处理程序类,以便它们足够独立。
答案 1 :(得分:1)
另一种方法是外观模式。这种结构模式使用接口来隐藏复杂性。一个接口的用法,该接口由多个其他具体类实现。
这里是示例:
OrderProcesorABC和OrderProcesorXYZ都实现了Orders接口。
下一步,名为OrderMaker的外观类将使用具体的类将调用委派给这些类。
有关更多信息,请参见this link in tutorials point。