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

  • 相关阅读:
    使用自绘控件详细步骤转
    对话框上如何创建视图
    c++ 分割字符串存入数组
    在对话框上创建视图的报错》ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd>IsChild(pParentFrame))
    CMFCOutlookBarTabCtrl 不显示了
    常用加密算法概述
    [两个月,黎巴嫩]贝鲁特守望
    [C#]XmlDocument_修改xml文件操作.
    wordpress之客户端发布文章
    大二上躺平经验
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/4284935.html
Copyright © 2011-2022 走看看