目前对于 LLDemo 方面的架构思考,是针对于个人理解以及自己在以往项目经验来给出的个人的建议,可能会有不合适的地方望多多包涵。
出发角度:
- 项目整体创建 FloDer 结构
- 在模块开发过程中选择开发方式
- 基础类和公有类提取
- 具体模块开发中架构设计
- 相关类在开发中应该准守的规则
项目整体创建 Floder 架构
下面创建的文件目录以 LLDemo 为例
LLDemo
- resource(资源文件)
- builtin (内置资源)
- images (图片资源,assets)
- lib (第三方库的代码引入)
- base utils (项目中基础库,开发过程中基本保持不变)
- layout constant (布局常量判断)
- basic informations(一些基础配置信息)
- utils (依据基础库来封装使用与多个模块公共接口,经常变动)
- interface of module (模块中接口)
- heigh api (基于基础库开发瞒住模块高级方法)
- custom view(项目中多个模块使用自定义 View)
- extensions (可以直接执行 App 的功能)
- module (按模 块划分,在具体模块开发需要根据开发选型:MVC,MVP 或者 MVVM)
- home (首页)
- setting (设置)
- vip page (VIP Page)
- editor (编辑模块)
之所以这样创建 FFloder 文件原因:
(1)瞒住在开发过程中明确每一个 floder 的职能;
(2)在新模块添加过程中更好管理相关资源;
(3)提取相关基类以及抽象方法,方便复用在查找和维护过程中减少成本;
(4)Floder 职能明确在后续新队员接手学习成本低。
在模块开发过程中选择开发方式
在模块开发过程中选定相关开发方式其实目前做常用的是 MVC,MVVM 两者
目前项目开发基本是基于 MVC 开发来进行构架模块下面在 module 中 Home 为例解释:
- Home
- model(数据模型)
- view controller(视图控制器)
- view(控件)
- custom view(Home 中独有 view)
- global view(对 Home 中 view 拆分)
上面在模块构建过程中可以通过对 View 拆分,然后减少 View 在 VC 初始化,把数据处理搬移到 Model,也可以减少 VC 肥大。但是当 VC 功能逐渐增多,趋向于平台入口 VC 肥大很难避免。
可以在新的简单模块逐渐引入 MVVM 开发模式,这样既可以熟悉 MVVM 开发模式,同时在新添加模块中逐渐向 MVVM 转变在不妨碍工作进度情况下也为后续 VM 的单独测试以及 LLDemo 功能多样化防止 VC 肥大做准备。(在后续估计也需要做统一大家一起使用,不能凭个人爱好)
这里给出在 github 上面模式介绍
参考地址:https://github.com/Optimize-iOS/app-architecture
基础类和公有类提取
感觉不用详说好处多多
具体模块开发中架构设计
因为目前 LLDemo 整个 APP 功能最详细,而且最全是在图片编辑类。
可以对改编辑类的框架搭建,减少不必要的 View 的创建和保存取消操作重复实现。
目前大概思路是:
(1)对共用的 View 的进行提取在 EditVC 实现,然后对渲染,展示这些 View 提供接口在编辑子类可以添加独有的 View;
(2)对在每一个编辑子类中保存,取消,展示原图这些方法在 EditVC 实现,给每一个子编辑调用。
不过存在一定的风险,就是在每个子编辑需要重新按照原来的逻辑实现功能,修改起来难度较大,测试周期长。好的一点就是后续添加方便修改内容少,实现更加便捷。也可以给大家一个思路,后续模块搭建过程中更好设计架构。