贡献式编程(三)

来源:互联网 发布:交通事故原因数据统计 编辑:程序博客网 时间:2024/05/16 06:04

定义过贡献单元后,开始更改架构来支撑每一个贡献的可能性了。

支持贡献的技术变更

由于第一版和第二版是不支持贡献的,我们需要定义贡献的目的地:订单系统。先把[订单系统]抽出来。Amazon 和 eBay 分别是两个不同的贡献。

在没有 Amazon 和 eBay 这两个贡献之前,订单系统就应该存在,而且应该是可以“正常”运行的(正常的意思是没有报错,只是没有下载订单数据)。

第二版(第二稿)

  • 一个OrderSystem系统
    • 定义了一个接口: IOrderDownloader
    • 定义了一个定时调道器
    • 负责主界面的控制
  • 两个贡献单元:
    • Amazon.jar :  AmazonOrderDownloader 实现了 IOrderDownloader
    • eBay.jar : EBayOrderDownloader 实现了 IOrderDownloader

当OrderSystem启动的时候,简单的可以用Java SPI负责加载所有IOrderDownloader的实现类,注册到系统的定时调道器。

以后如果再有其他平台的订单需要下载(如速卖通),简单的可以同样地实现一个 Aliexpress.jar ,搞定!

进一步需求

用户真的开始投诉了:我们还没有解决界面上根据不同的订单数据,显示不同的UI、字段等。

这个需求开始需要分析数据结构,我们需要定义:

  • 跨平台的通用的字段:如订单日期,SKU,数量等等
  • 平台特有的字段

定义了两种数据,IOrderDownloader 都需要更改,分开处理不同的数据。这个修改比较简单。

界面上,订单明细的UI,同样定义两个区域,一个区域显示通用字段,另外一个区域显示平台特有字段。而这个平台特有区域就是可以扩展的地方了。


0 0
原创粉丝点击