关于移动端的架构

Posted by HaoChen Blog on January 11, 2017

什么是架构

最大限度的去实现这些需求

首先架构分为

  • 模型层 : 模型层横跨所有层级,封装了所有数据实体类,基本上也是跟json的obj数据一致的,在接口层会将obj转化为相应的实体类,再通过Action传到界面层
  • 接口层 : 接口层封装了网络底层的API,并提供给核心层调用
  • 核心层 : 核心层介于接口层和界面层之间,主要处理业务逻辑,集中做数据处理
  • 界面层 : 界面层处于最上层,其核心就是负责界面的展示。

image

界面层

原则:

  • 保持规范性 :定义好开发规范,包括书写规范、命名规范、注释规范等,并按照规范严格执行
  • 保持单一性:布局就只做布局,内容就只做内容,各自分离好,每个方法、每个类,也只做一件事情
  • 保持简洁性 :保持代码和结构的简洁,每个方法,每个类,每个包,每个文件,都不要塞太多代码或资源,感觉多了就应该拆分

show me code

规范性

  • 缩进
  • 命名
  • 单位

单一性

  • 界面的单一:界面数据的获取和展示也应该分离 ,单一职责原则
  • 包和类的单一: 定义包之前,需要先想好它的职责是什么,明确定义并确保它只有一个职责,不要让一个类做太多事情,要分离好各种元素,每个元素只做一件简单的事
  • 方法的单一 :方法的单一,表现为一个方法是对一个行为的封装
  • 资源文件的单一:Android提供了各种资源文件,strings.xml用来存储字符串,arrays.xml用来存储字符串数组,colors.xml用来存储颜色值,dimens.xml用来存储尺寸值,等等。资源文件的单一,是说所有相关的资源信息要在资源文件里定义并引用到代码或布局文件里,而不是在代码或布局文件里直接定义

简洁性

代码最怕的就是臃肿,臃肿的代码可读性差,维护麻烦,扩展更不用说了

  • 包的组织 :按照组件类型来分包,而不是按业务模块来分包。业务有可能会变,但组件类型是基本不变的。另外,新加入的开发人员,对业务不熟悉,但对组件是很清楚的,理解快,入手也快。
  • 类和接口的命名 :组件类的命名添加该组件的后缀,例如:Activity类命名添加Activity后缀,Fragment类命令添加Fragment后缀,适配器添加Adapter后缀,等等。实体类则可添加BO的后缀名称,工具类添加util后缀,接口的实现类添加Impl的后缀。接口的命名也一样,比如,我的项目中,接口层的接口后缀都带上了Api,核心层的接口后缀都带Action
  • 资源文件的分类:trings.xml文件用来存储应用中的所有字符串,包括页面标题,按钮文字,标签文字,提示文字等等,应该做好分类并统一存放。

  • WebP图片格式的使用

H5容器的图片我们全部使用WebP格式。我们把容器对图片的请求进行了拦截,用native代码重新发起一个WebP图片的请求,在请求成功后native把WebP图片转换为png的数据返回给H5容器进行展示,使用WebP后我们页面需要下载的图片数据量减少了一半以上

  • 加入路由
  • 加入Hybrid
  • hotfix
  • WebCore