公司的商业模式,并不是长期维护一个项目,而是以一个demo为中心,复制到不同的项目,根据不同的项目需求做微调。这样的商业模式,会有以下几个特点:
- 快速移植。有些项目改动小,只是修改UI;有的项目改动大,原来设计的功能,不符合客户的需求,需要做改动;还有的客户要求更严格,要对平台,做一定的改动
- 平台型迁移。有的项目会做平台性的迁移。比如,使用外挂的蓝牙模块;比如安卓大版本的升级,从安卓6升级到安卓9。
- 多个项目同时进行。公司经常是多个项目同时上马,即使是蓝牙这一个功能,也会有多个开发人员,分布于不同的项目,同时进行移植开发工作。
为了更好地适应这种模式,我们在开发蓝牙功能的时候,针对项目,做一些针对性的设计,以尽可能地减少工作量,提高我们的开发效率应对方式是这样的
增加我们自己的中间层,隔离UI与平台接口的关系
中间层示意图.jpg
这样做主要是应对平台型迁移这种情况。因为客户的需求是多种多样的,有的会使用外挂的模块,一般是运行一个linux和来我们的APP通信;另外,安卓版本本身也会升级;以及,我们公司,可能使用除了杰发以后的其它平台……在面对这种底层接口有变动的时候,有了中间层,就可以使用UI与平台接口解耦;在移植过程中,我们的UI可以不做修改,或者仅做少量修改
中间层分模块
中间层示意图.png
这是一张蓝牙中间层详情示意图。整个蓝牙的交互分成了这几个模块,不同模块之间没有调用关系,这样即使将来某个模块有改动,不会影响到其它模块。
不同的模块,负责不同的功能,比如BTCallManager就处理与电话相关的功能;上层的UI模块,只会与这几个Manager交互。这样,也方便水平扩展,如果将来有些特殊的需求,比如短信功能,那就重写一个Manager即可,不用修改原来的Manager,实行了对增加开放对修改关闭的开闭原则