模块化与组件化开发

模块化与组件化开发

Posted by pxf on March 2, 2018

模块化与组件化开发

模块化,组件化是一种处理复杂系统分解为更好的可管理模块的方式。

模块化

模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容。模块我们相对熟悉,比如登录功能可以是一个模块,搜索功能可以是一个模块。

组件化

组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,已较少耦合。

模块化vs组件化

模块化和组件化本质思想是一样的,都是”大化小”,两者的目的都是为了重用和解耦,只是叫法不一样.如果非要说区别,那么可以认为模块化粒度更小,更侧重于重用,而组件化粒度稍大于模块,更侧重于业务解耦。

模块化与组件化优缺点

组件化是指以重用化为目的,将一个系统拆分为一个个单独的组件

优点

  • 1.模块间解耦,复用,避免重复造轮子,节省开发维护成本 对业务进行模块化拆分后,为了使各业务模块间解耦,因此各个都是独立的模块,它们之间是没有依赖关系。每个模块负责的功能不同,业务逻辑不同,模块间业务解耦。模块功能比较单一,可在多个项目中使用

  • 2.可单独编译某个模块,降低项目复杂性,提升开发效率 每个模块实际上也是一个完整的项目,可以进行单独编译,调试

  • 3.可以多团队并行开发,测试 多个团队公用同一个组件,在一定层度上确保了技术方案的统一性 每个团队负责不同的模块,提升开发,测试效率

缺点

对开发人员和团队管理者提出了更高水平的要求,相对传统方式,在项目的管理和组织上难度加大,要求开发人员对业务有更深层次上的理解。

组件化与模块化

组件化与模块化业务分层:由下到上

组件与模块以jar的形式呈现,或以aar的形式呈现。主工程通过依赖的方式使用组件所提供的功能,其本质上都是Library,他们不能脱离主工程而单独的运行。

基础组件层:

  • 底层使用的库

  • 封装的基类,例如:BaseApplication,BaseActivity,BaseFragment,BaseAdapter等。

  • 一些工具库(libs),比如获取App设备信息(AppInfoUtil),日志工具类(LogUtil),包相关的工具(PackageUtil),Toast工具类(ToastUtils),资源工具类(ResourceUtil)等。

  • 缓存库

  • hybrid混合开发库

  • 网络库(RetrofitUtil)

  • UI库(UIKit)

业务组件层:(与业务相关)

  • 分享库

  • 相册库

  • 二维码扫描

  • 直播库

业务模块层:(按照业务划分模块)

  • 登录模块

  • 搜索模块

  • 支付模块

  • 金融交易模块

  • 社区模块