贡献式编程(二)

前面说到一个订单系统,需要显示下载回来的订单。由于业务发展,系统需要做一些调整

变更

系统需要扩展,需要支持第二个平台(如 eBay)。要下载第二个平台上的订单,也要在UI上显示得到订单的明细。

第二版(第一稿)

由于开发时间所限,我们做了以下操作:

  • OrderDownloader 更改名字,成为 AmazonOrderDownloader
  • 多写一个叫 EBayOrderDownloader
  • 在定时器多添加一个调到EBayOrderDownloader上
  • 订单数据结构保持不变,显示不变

可以下班了!

等等!如果数据结构保持不变,订单数据结构肯定会对Amazon倾斜,EBayOrderDownloader会有很多适配的代码。

同时由于通常用户需求的不明确,通常UI显示不到 eBay 特有的订单数据项,会感到郁闷,投诉在上线后开始来了。

回头看看,我们这次变更的贡献在那里?

  1. 多了一个 EBayOrderDownloader 对象
  2. 定时器多了一个调道

分析思路:定义贡献单元

从需求上,一般人可能只看到[增加了一个平台下载任务]。但这个需求背后隐藏了另外一个需求,就是[添加平台的可能性]。

需求到技术上,通常需要设计和落实的[添加平台的可能性]如何达到呢?

最理想的就是用JAR(或者是DLL,按语言不同会有所不同)包来交付。一个JAR包是:Amazon.jar 另一个是 eBay.jar。添加一个平台就只需要把JAR包放到特定地方。

这个是框架性的调整,是整个[贡献式编程]的核心思想和基础框架支持。可能有人会用不同的方式去实现:Java SPI,OSGi 等,具体实现插件的框架很多,在此不做详细描述。

我们定义了贡献的单位,为一个JAR包,我们就可以按照此思路去重构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值