设计上的若干问题

  • 问题一: 需要根据平台来选择不同的接口。但是底层的接口并不支持多态的实现。
    例子:根据goodsId拉取线上商品 淘宝的接口是

      TbInfoAcquireService.itemDetailGet(List<String> goodsIds, Long channelNo, Long brandsNo, Long userId)

    那么一号店的接口可能是

      YhdService.itemGet(List<String> goodsIds, Long channelNo, Long brandsNo);

    这样子就无法在代码中实现多态的性质。如果要直接写的话,就必须写成

      switch **
      case:
          TbInfoAcquireService.itemDetailGet
      case:
          YhdService.itemGet

    目前的解决方案有2种:

    * 1.中间做一层代理类。
    
          TbProxy.itemGet(List<String> goodsIds, Long channelNo, Long brandsNo, Long userId) implements Proxy;
          YhdProxy.itemGet(List<String> goodsIds, Long channelNo, Long brandsNo, Long userId) implements Proxy;
    
      这样子就能直接在代码中实现多态的性质。
    
    * 2.直接去修改原代码使原本提供的接口就有多态的性质。可以增加一个接口
    
          interface ItemGet.itemGet(List<String> goodsIds, Long channelNo, Long brandsNo, Long userId)
    
      然后`TbInfoAcquireService`和`YhdService`就可以去继承这个`interface`。或者让实现类去实现2个接口。
  • 问题二:我们按照类的执能细分了很多类。
    Action需要调用这些Service的时候。处理方法有2种。
    一种是,直接调用这些Service
    第二种是。写一个总的service然后在这个service中做一层代理,来分别调用其他的service.
    这样就会出现一个问题。
    Action A 依赖 Service B,Service C。同时Service C是依赖Service B的。不得不说这样子的设计肯定是有点问题的。具体的改进方式希望自己能够在日后的工作中能够总结出来。

转载于:https://www.cnblogs.com/iMouseWu/p/4284935.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值