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的。不得不说这样子的设计肯定是有点问题的。具体的改进方式希望自己能够在日后的工作中能够总结出来。

  • 相关阅读:
    Vue 计算属性(四)
    Vue 方法与事件(三)
    Vue 基本指令使用(二)
    Vue 项目开发环境搭建(一)
    SpringBoot 整合 Dubbo
    Nginx 中 include 指令使用
    Nginx 中 root 和 alias 的使用区别
    JS动态修改网站图标以及标题
    vue中使用轮播图插件carousel,克隆的图片点击事件无效的解决办法
    根据 url + fileName下载文件,并更改文件名
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/4284935.html
Copyright © 2011-2022 走看看