关于同类业务有多个分支的接口设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于同类业务有多个分支的接口设计相关的知识,希望对你有一定的参考价值。

同业务多分支的接口设计

场景说明
比如处于下游的系统,在接收源系统的计划订单的时候,因订单的种类比较多,例如:采购订单、销售订单、调拨订单、预售订单等待,如果这些订单的差异比较大,需要分开建多个表,这样后台接口就需要设计一番了。
下面就按步骤直接贴代码案例
第一步: 创建一个接口,定义接收订单的方法;
public interface OrderRepeaterServiceI {

 Result receiveOrder(ReceiveProductOrder order);

}

第二步: 定义接口的实现类,2个br/>@Service
public class PurchaseOrderServiceImpl implements OrderRepeaterServiceI {
br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("采购订单执行分支...");
return null;
}

@Service
public class SaleOrderServiceImpl implements OrderRepeaterServiceI {
br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("销售订单执行分支...");
return null;
}
}

第三步: 定义分发器服务br/>@Service
public class OrderRepeaterService {

@Resource
private OrderRepeaterServiceI purchaseOrderServiceImpl;

@Resource
private OrderRepeaterServiceI saleOrderServiceImpl;

public Result receiveOrder(String orderType, ReceiveProductOrder order) throws Exception {
    OrderRepeaterServiceI orderService = null;
    switch (orderType) {
        case "10" : orderService = purchaseOrderServiceImpl;break;
        case "20" : orderService = saleOrderServiceImpl;break;
    }
    if (orderService != null) {
        orderService.receiveOrder(order);
    } else {
        throw new RuntimeException("订单类型未知异常.");
    }
    return Result.successWithData("成功");
}

}

第四步: 定义接收源系统的控制器br/>@Controller
@RequestMapping(value = "/mtsapi")
public class OrderApiController {

private static final Logger logger = Logger.getLogger(OrderSapApiController.class);

@Resource
private OrderRepeaterService orderRepeaterService;

@RequestMapping(value = "/testService")
@ResponseBody
public Result testService(String orderType) {

    try {
        ReceiveProductOrder order = new ReceiveProductOrder();
        order.setOrderTypeCode("10");
        order.setRelatedDocCode("SO18031610001");
        return orderRepeaterService.receiveOrder(orderType, order);
    } catch (Exception e) {
        logger.error("接口测试异常.");
        return Result.errorWithData("测试异常");
    }
}

}

以上是关于关于同类业务有多个分支的接口设计的主要内容,如果未能解决你的问题,请参考以下文章

是否有在单个活动中处理多个片段的 Android 设计模式?

设计模式七大原则

关于设计模式的一道题目

关于Spring Boot中的业务层(Service)是否要创建接口的分析

关于侧边导航菜单和片段的一般设计问题

Day647.接口设计规范问题 -Java业务开发常见错误