设计上的若干问题

  • 问题一: 需要根据平台来选择不同的接口。但是底层的接口并不支持多态的实现。
    例子:根据goodsId拉取线上商品 淘宝的接口是

    TbInfoAcquireService.itemDetailGet(List goodsIds, Long channelNo, Long brandsNo, Long userId)

    那么一号店的接口可能是

    YhdService.itemGet(List goodsIds, Long channelNo, Long brandsNo);

    这样子就无法在代码中实现多态的性质。如果要直接写的话,就必须写成

    switch **
    case:
    TbInfoAcquireService.itemDetailGet
    case:
    YhdService.itemGet
    目前的解决方案有2种:

    * 1.中间做一层代理类。

    TbProxy.itemGet(List goodsIds, Long channelNo, Long brandsNo, Long userId) implements Proxy;
    YhdProxy.itemGet(List goodsIds, Long channelNo, Long brandsNo, Long userId) implements Proxy;

    这样子就能直接在代码中实现多态的性质。

    * 2.直接去修改原代码使原本提供的接口就有多态的性质。可以增加一个接口

    interface ItemGet.itemGet(List goodsIds, Long channelNo, Long brandsNo, Long userId)

    然后TbInfoAcquireServiceYhdService就可以去继承这个interface。或者让实现类去实现2个接口。

  • 问题二:我们按照类的执能细分了很多类。
    Action需要调用这些Service的时候。处理方法有2种。
    一种是,直接调用这些Service
    第二种是。写一个总的service然后在这个service中做一层代理,来分别调用其他的service.
    这样就会出现一个问题。
    Action A 依赖 Service B,Service C。同时Service C是依赖Service B的。不得不说这样子的设计肯定是有点问题的。具体的改进方式希望自己能够在日后的工作中能够总结出来。

posted @ 2015-02-10 21:15  iMouseWu  阅读(215)  评论(0)    收藏  举报