盒子
盒子
文章目录
  1. 引言
  2. 组件化与模块化
  3. 组件化
  4. 模块化
  5. App架构组成
    1. 1.宿主
      1. 命名
    2. 2.组件
      1. 命名
    3. 3.模块
      1. 命名
    4. 4.公共Library
      1. 命名
    5. 5.路由
  6. 小结

企业App架构组件分层

引言

上一篇说了Android app 架构,主要方向是组件化。这篇说说企业App的组件化细分,主要是一些个人经验以及建议

组件化与模块化

我们会经常看到这两个概念“组件化”,“模块化”,要说他们的详细区别也不好说,都是一个个library module。其实是有区别的,理解清楚才能让我们的app架构更清晰

组件化

“组件”英文翻译过来是Component,从字面意思,我们理解为一个组成单元,且不能再往下拆分,这是重点,例如:“图片加载”组件,它有什么特点:

  • 可复用
  • 可替换
  • 独立 (与其他组件不存在依赖关系)
  • 不可拆分 (业务代码不能再向下拆分)

针对以上所说,随便举几个例子,有哪些常见的组件:

1. 图片加载组件
2. 图片上传组件
3. 日志组件
4. 会话组件
5. 网络请求组件
6. 数据库操作组件
7. app更新组件
8. 地图组件
9. 等等...

模块化

组件化搞清楚,模块化就不难理解了,英文翻译过来是Module,它是一个具体的业务,具体的业务包含一个或多个组件,例如:钱包模块,它的大体特点:

  • 可以是一个具体的大型业务
  • 可以是架构组成的其中一个技术模块
  • 可以是几个组件的功能集合

常见的模块示例:

1. 钱包模块
2. 即时通讯模块
3. 支付模块
4. 扫码模块
5. 等等...

App架构组成

组件化与模块化搞清楚后我们就开始说详细的架构

1.宿主

宿主就是我们的主工程,它是一个壳,可能包含一些业务,大部分或者全部业务都被下面的模块包揽,它只要依赖不同的模块即可。

命名

AndroidStudio默认命名为app,可自己随意取,个人习惯用默认的命名

2.组件

新开发一个App,首先准备好需要用到的组件

  • 网络请求组件
  • 图片加载组件
  • 图片上传组件
  • 动态权限组件
  • app更新组件
  • 事件总线组件
  • 工具类组件
  • 自定义View组件
  • 等等…根据个人需求增删

命名

关于组件的命名,个人一般喜欢lib.xxx,也可以component.xxx,加前缀一是起到分类作用,二是可读性较强

3.模块

模块涉及到具体业务,示例:

  • 购物车模块
  • 商品模块
  • 结算模块
  • 支付模块
  • 钱包模块
  • 即时通讯模块
  • 等等…根据业务种类拆分

命名

模块的命名,一般是module.xxx,命名可根据自己喜好,这里只是个人见解

4.公共Library

app少不了一些多个module都依赖的一些组件,一般我们把这些组件放在一个公共的library module中,其他用到这些组件的module,可以直接依赖,这就是公共库

命名

命名一般是lib.common

5.路由

组件化的核心就是路由,module与module之间的无依赖通信全靠它,路由的选择,上篇文章有介绍

小结

架构组成基本上就上面说的这些,还有一些注意点:

  • 组件之间独立无依赖
  • 模块之间独立无依赖,模块与模块通信使用路由
  • 模块业务清晰,独立,一个模块负责一个功能,就是我们常说的单一原则

转载请指明出处RobinBlog:http://robinx.net/2017/03/06/企业App架构组件分层/