挑战淘宝:且看如何用1500行搞定淘宝20000行Java SDK(1)

         挑战淘宝:且看如何用1500行搞定淘宝20000行Java SDK

继亚马逊、雅虎、Google等一众知名大公司掀起了开放API的潮流后,淘宝也不甘寂寞,于2009推出了TOP平台,搭上了这趟开放API的顺风车(详细请看http://open.taobao.com/)。

为了更好的开发TOP程序,淘宝提供了各种语言的SDK,其中自然少不了编程语言老大JavaSDK。但不幸的是,当我兴致勃勃的将SDK下载下来,准备大干一场的时候,却发现淘宝的Java SDK只是“看上去很美”,用起来却很不爽。

让我们分析淘宝给的样例来看看究竟是什么不爽。

如下是淘宝给的API调用样例(详见:http://wiki.open.taobao.com/index.php/FAQ#SDK):   

我们基于这个样例来看淘宝Java SDK的调用机制:

1)  创建一个TaobaoJsonRestClient对象,此对象负责完成TOP API调用

2)  生成一个API请求对象:ItemGetRequest,设置API调用参数

3)  获得一个API响应对象:ItemGetResponse,此对象由TaobaoJsonRestClient生成

4  ItemGetResponse中通过TaobaoItemJSONConvert获取最终的对象;

 

样例来看,淘宝的SDK调用机制也没有什么问题:采用面向对象,请求和响应隔离。不过如果你打开SDK的源代码、或者亲自调用几个API体验一下,就会发现淘宝SDK中的实现机制存在如下问题:

1)绝大部分代码是非常相似、非常简单的属性定义和操作

API相关的类有:请求类、响应类、结果类、转换类,但不同的API这些类都非常类似,都是属性定义、属性get/set操作。我们来看源代码(由于代码太多,省略了绝大部分相似的代码):

==========================================

Item结果类:

 

=====================================================================

Trade类:          

      

2)设计与实现没有分离,每个API都要设计4个不同的类,导致代码量非常庞大

我们以SDK的样例来进行分析,分析内容请看代码注释:

用代码统计工具统计,代码量是21296行代码;加上大部分代码相似,很难阅读。 

3API的任何变更,SDK都必须更新,开发者也必须相应更新,耦合联动关系很强

例如:ItemGetRequestsetIid修改为setIID,那么所有使用了setIid的地方都必须修改,然后重新编译。

又如:如果在SDK2.0中某个API增加一个参数,或者增加了新的API,而你又必须使用的话,那么就必须切换到SDK2.0,这个切换可不是改个名字或者增删一行代码那么简单,你需要将原来的jar包删除,然后倒入新的jar包,然后再到SDK2.0中找到对应的API,还要寄希望于淘宝不要把其它API相关对象的定义给改了。

 

    加上淘宝有的代码并没有开放,如果一旦出问题,调试和修改几乎不可能的。基于这些原因,我决定自己动手建立一套比淘宝SDK更简单、更容易理解和使用的调用机制。

==========================未完待续,欲知如何设计,请看下回分解================

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值