少有人走的路

勇哥的工业自动化技术网站

售货机项目--应用控制反转的实战

勇哥注:

此为转贴,载于:https://zhuanlan.zhihu.com/p/133872816

这个某位软件经理的项目实践,放这里让诸君共勉。


控制反转和依赖反转是软件框架里面常见的设计方法,说起来容易,但使用起来很难,其根本原因在于场景的难识别。本文根据实际项目中的落地经验来谈一谈控制反转和依赖反转的相关技术。

重构背景

去年10月上旬,公司正式立项智能售货机(地铁站卖水的自助售卖机)项目,我被指定为该项目的技术经理,全权负责该产品的所有技术。

智能售货机的主要流程为:

整个流程大体上可分为四步:选择商品、支付、出货和售后服务。

由于公司的业务扩大,客户要求我们再做一台咖啡机,于是又成立了另外一个项目组,负责智能饮品机(类似于商场里面自助咖啡机)的开发。

流程大体上也可分为四步:选择商品、支付、出货和售后服务。

由于饮品机项目的技术经理另有安排,于是我接手该项目,了解到该项目的整体流程后,发现两个项目的流程是类似的,只有有限的几步是不一样的,让我陷入了沉思。

  1. 有必要安排两拨人来开发APP吗?

  2. 后台可以共用一套流程吗?

  3. 前端可以用一套代码来实现吗?

设计的反思

两个产品的相同点

  1. 支付方式和流程一样

  2. 售后服务一样

两个产品的不同点:

  1. 整体外观上不一样:售货机属于竖屏(商品种类多)、饮料机属于横屏(需要制作咖啡)

  2. 商品显示和选择不一样:售货机可以选择多件商品,饮料机只能一次选择一样,也就是显示界面不一样

  3. 出货方式不同:售货机直接掉货、饮料机需要先制作然后再出货

根据以上相同点和不同点,不难想到两种重构方式:

  1. 方式一:把支付和售后做成公用模块,其业务逻辑重用

  2. 方式二:整体做成一个框架,每个产品只实现不一样的地方

大部分人都会选择方式一,这样可以加快研发速度,毕竟有部分模块得到了重用,但人力并没有减少,还是需要那么多人,资源并没有被释放出来。在实际开发中,我们采用了方式二,前端开发可以释放出一个人,仅需要一个人就可以完成两个项目的开发与调试。之所以能做到,完全依赖于控制反转和依赖反转这两种思想。谈起控制反转和依赖反转,不得不提及依赖注入,因此本chat就来探讨一下这些思想的相关技术、使用方法及场景。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864