zoukankan      html  css  js  c++  java
  • 设计上的若干问题

    • 问题一: 需要根据平台来选择不同的接口。但是底层的接口并不支持多态的实现。
      例子:根据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的。不得不说这样子的设计肯定是有点问题的。具体的改进方式希望自己能够在日后的工作中能够总结出来。

  • 相关阅读:
    面向中后台复杂场景的低代码实践思路
    树莓派使用raspivid实时预览视频
    grep rn无法匹配文件中的字符串
    C++有关std::sort和std::bind那些事
    C++有关unordered_map::erase的奇怪bug
    ssh与tar的奇妙组合
    git指定仓库使用特定用户名提交
    在win7下搭建php+apache+mysql环境
    神乎其神的技艺
    好书推荐——《启动大脑》
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/4284935.html
Copyright © 2011-2022 走看看