-
问题一: 需要根据平台来选择不同的接口。但是底层的接口并不支持多态的实现。
例子:根据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
的。不得不说这样子的设计肯定是有点问题的。具体的改进方式希望自己能够在日后的工作中能够总结出来。
相关文章
- 在一张 24 GB 的消费级显卡上用 RLHF 微调 20B LLMs
- 提升用户体验舒适度的核心设计原则
- OB运维 | tenant--删除租户的流程设计
- Alluxio跨集群同步机制的设计与实现
- OLAP MPP分布式关系型数据库的双活容灾系统的设计
- 【230310-4】已知圆心在x轴上的圆C与直线l:x+2倍根号2-10=0切于点E(m,2倍根号2),圆P:x2+(a+2)x+y2-ay+a+1=0 求: 1)c的方程 2)已知a>1,圆P与x轴
- 解决双网卡虚拟机linux无法上外网问题的经历
- 一次排查某某云上的redis读超时经历
- vue mint-ui 框架下拉刷新上拉加载组件的使用
- 用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形。