随着公司业务需求的不断增加、三方合作不断接入、新APP快速产出,就会出现想在原有的代码中想增加新的业务和功能,怕影响老逻辑,想不影响老逻辑,去扩展又扩展不了的局面,就需要对应用的架构做相关的设计和优化,使可以快速复用扩展、减少网状耦合、减少开发时间成本、减少测试成本等。基础框架架构就是为解决这些问题所设计的。
对公司业务、功能及三方合作相关内容进行梳理分析,然后对相关模块进行切割分层。我们的基础框架架构设计思路是按照纵向切割,横向切割及立体扩展三方面下手:
基于纵向切割:针对各业务模块、各功能模块的单一业务和单一功能进行封装,防止对于非自己职责范围的业务和功能的依赖。
基于横向切割:针对业务层级,功能层级、基础依赖层级进行分层,方便使用者从不同的层级去集成。
基于立体扩展:方便快速集成扩展输出APP。
基础框架架构设计各分层说明如下:
具体基础框架架构设计如下图所示:
对上图的基础框架架构设计的基础功能模块层,UI组件层及业务模块层相关分层实现细节及注意事项详细说明,具体如下:
整个应用开发的最小单元,主要是应用中依赖的相关三方库及api接口等,做开发的同学都知道,不做过多说明。
对基础支撑层中各种凌乱的三方库功能进行归类分析,对于同类的功能抽象统一的接口、协议,减少开发者对各种三方库接口的接入成本及对三方库的对象的耦合度,开发者只需要了解抽象出来的接口及输入输出数据模型。关注点如下:
具体实现如下图三方授权登陆功能模块所示:
对常用的UI组件进行封装,方便各个业务或者应用的复用、减少大量相同View对象的创建数量,这个使用可以参考设计模式中的享元模式。关注点如下:
具体实现如下图示例所示:
由于业务需求是随时随地不断变化的,所以这层的设计要做到在不修改原有业务的基础上可以对业务扩展和复用,在把业务逻辑、业务视图、业务数据模型等进行封装,并且在封装的时候要分析清楚哪些是不可变的的元素,哪些是可变的元素,把不可变的元素进行封装,可变的元素进行抽象,方便后期需求变化扩展。关注点如下:
具体实现如下图示例所示:
基础框架的设计目的,就是为了快速输出APP,然而基础框架不可能满足所有新的app的需求,就需要对现有基础框架中不满足需求的功能层、UI层、业务层进行扩展实现,以满足现有业务的需求,关注点如下:
具体实现如下图示例所示:
在架构设计过程中调用时序也是非常重要的,关注点如下:
具体调用时序示例: