extraInfo的设计

记录一下工作中所用到的代码设计,假如你开发一个静态库给公司里写业务的程序员去用。静态库设计的时候与app之间是没有耦合的。
比如静态库是市面上几个广告库的集合,接入你写的静态库就可以根据后台的配置展示不同平台的广告,在静态库内部必定涉及到统计,比如展示和点击。这两个统计都需要给server提供这样一个对象,来上传广告平台和广告类型。

statisticsObject = {
 "platform":plat,  //exp:csj,gdt,google...
 "position":pos,  //inter, interstitial, reward, splash...
}

突然某天,服务端要求根据调用静态库不同的入口在这个统计对象中添加一个字段from,比较直观的做法就是直接给外部暴露一个设计from的接口,但是如果未来某天服务端又需要在这个统计中上传用户使用app的时长呢?
能够一劳永逸的办法就是在静态库中对外开放一个extraInfo的接口,可以传入一个对象,在iOS中就是NSDictionary,一个字典。至于传入的内容,静态库不用知道是什么,只是在调用统计接口的时候把extraInfo里的信息与在静态库内部生成的statisticsObject合并在一起上传给服务器即可。
第一次做extraInfo的时候还想要把from作为公开的key暴露给业务端,后来经过老板的指导,在静态库内不去解析extraInfo而直接发给server即可。

你可能感兴趣的:(extraInfo的设计)