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

  • 相关阅读:
    LeetCode24-Swap_Pairs
    LeeCode
    LeetCode3-Longest_Substring_Without_Repeating_Characters
    治愈 JavaScript 疲态的学习计划【转载】
    前端冷知识集锦[转载]
    知道这20个正则表达式,能让你少写1,000行代码[转载]
    关于简历和面试【整理自知乎】
    正念冥想方法
    一些职场经验【转载自知乎】
    犹太复国计划向世界展现了一个不一样的民族——观《犹太复国血泪史》有感
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/4284935.html
Copyright © 2011-2022 走看看