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

  • 相关阅读:
    List 组件简单示例及其onItemsDisclosure点击事件
    读取mysq数据库l数据,并使用dataview显示
    使用dataview组件显示服务器端xml文件数据
    Flex 布局教程:语法篇
    artTemplate模板引擎
    HTTP协议响应消息的常用状态码【转】
    淘宝网前端开发面试题(二)--JS 面试题
    淘宝网前端开发面试题(一)--HTML & CSS 面试题
    HTML 5 Canvas
    清除浮动的几种方法
  • 原文地址:https://www.cnblogs.com/iMouseWu/p/4284935.html
Copyright © 2011-2022 走看看