北京APP开发模块化设计

发布时间:2019-10-29 14:18 | 浏览人次:浏览次数

普遍依照界面区分模块后,同属该模块的业务层和UI层都摆在同一目录下(还能够有子目录)。层级不等于文件组织,也不等于模块区分。1个模块不会被层级限死,最多三层都能够逾越。

区分层级的意义是高于业务模块对待耦合问题。业务模块内部普遍是MVC、MVP、MVVM式设计,但是这些设计模式没回答跨模块的可依赖性。大多数人会认同基本层可被所有代码依赖,但少有人确定UI层可依赖所有业务层代码(比如A页面可依赖B页面的model)。模块间彻底解耦一定是完美的,业界有不少消息框架、组件化框架来协助解决。但请肯定留意,这些东西会提高复杂度和开发维护成本,在代码量和团队人数还不多的同时不宜采取。

基本层

这层假如设计得好,这部分东西是不关联具体业务的,多数能够跨项目采取,由业务层做定制化后为所属项目服务。

这层能够进一步细化成3种种类。

数据IO

·设立:持久化储存,key,升级时持久化数据迁移,变化通知

·颜色:换肤,渐变色

·图片:换肤,编解码

·文本:富文本处理,多语言

·调试:Log、debug辅助、宏开关

·加解密

·编解码

·数据结构

·数据算法

·网络:网络种类判别,缓存,下载,api交互

·线程/进程管理

·系统信息:版本判别、屏幕辨别率、内存、磁盘容量、更改系统设立

·文件管理:路径、备份

·字符串:格式化(日期、时间、钱币、小数),转码,正则,特殊数字检测(电话号码)

·常量值,普遍是业务用的

程序骨架

·消息框架

·页面路由

·组件化框架

·插件化框架

功能逻辑

它们都可视为component:

·初始化:被其他程序调用

·升级:首次安装与覆盖安装的判别

·会员信息:第三方登录

·广告

·统计埋点

·推送

·崩溃:注册crash handler

·二维码

·共享

·支付

·LBS

·相册

·相机

·指纹

字符串常量

·xml:需求通过系统API获得实际的值,源生支持多语言

·统一摆在1个定义常量的目录中:可直接引用常量;多语言方案要自己再实现

·分散在采取的代码中:所见即所得,没法换语言

没有哪种方法绝对地优越。在无高级需要的情形下,越便利的方法越好。

网络模块

网络模块可分4层:

·基本层:能够是4种东西

系统网络框架

封装了系统框架的第三方库

第三方库

自己实现的网络框架

·通用层:精简接口,定义通用回调,统一参与必须的参数

·API层:与接口对应的函数集,函数内再调用通用层的接口

·封装层:便利其余模块调用。比如需求时候调用三个API且全部返回数据后合并回调,能够把这个逻辑做成一个函数

(层级是功能意义逻辑的区分,不代表每层都会有1个类来封装上一层,有同时同1个类内的函数集就是一层)

设立模块

·准确的“设立”是指值在运行时初始化且是可变动的。

·其次是配置,其值明确后是固定的。值来源自配置文件或服务器下发。

·再有是个人材料和喜好,都会有跟某个会员绑定的意思,是会员的喜好,每个会员能够不一致。

他们又可分为能否需求持久化保存,所以会有RuntimeSetting和ArchivedSetting2个类。RuntimeSetting普遍是个单例,数据只保存在内存中,没必要用key-value到访问,直接由成员变量表示即可。

View层组件

组件化最原始目标是跨模块复用,目前发展成解耦的伎俩之一了。

其余

·有些模块不能够依赖那么多东西

·来自第三方的代码都不要改,做成pod或library,能够随时覆盖式升级。

·应在其基本上做拓展,不行就再封装一层。

·初始化步骤能够有专门的东西来负责,精简app入口函数的内容。

·1个自定义view(比如弹窗)应该与业务无关,所有的展示内容和设立都应该由外部传入。

·应该让设计师做好标准化,颜色定义是一套风格,所以颜色值不会许多。

·同一模块内的类,依据能否可跨项目重用,应划分文件保存。


免责声明:本站部分文章转载自网络,不代表本站的观点和立场,不以盈利为目的。如有侵犯公司或个人权益,本站会第一时间删除文章。我们是一家北京app开发公司,欢迎咨询免费获取思维导图!

本文地址:https://www.shuoapp.com/article/1982.html

思捷智联

思捷智联是一家2009年成立于北京的IT外包公司,我们致力于为企业提供app软件开发和微信小程序开发服务。公司成立10年来,我们为民政部、方正电子、神州数码、联想控股、壹基金、首钢集团、北京大学、北京师范大学、今麦郎、丰汇租赁、万通控股等上百家企业提供了IT外包服务。我们努力实现每一位客户的托付,为客户创造实在的效益,让您与梦想走得更近。

微信咨询

扫描微信二维码
同市场经理沟通需求

我们积累了丰富的移动互联网开发和运营经验,在开发中为客户提供更多帮助!
点击右侧咨询,免费获取思维导图和报价单!