Android组件化、模块化、插件化

Android 组件化、模块化、插件化区别详解 - 掘金

组件化:

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

就是“基础库”或者“基础组件",意思是把代码重复的部分提炼出一个个组件供给功能使用
使用:Dialog,各种自定义的UI控件、能在项目或者不同项目重复应用的代码等等
目的:复用,解耦
依赖:组件之间低依赖,比较独立
架构定位:纵向分层(位于架构底层,被其他层所依赖)
特点:从UI界面的角度进行划分,前端的组件化,方便UI组件的重用

在Android开发中,架构的设计通常会考虑组件化和模块化两个方面:

  1. 组件化(Componentization)

    • 组件化是指将一个大型的应用程序拆分为多个独立的组件,每个组件都是一个相对独立、可复用的单元,可以独立开发、测试和维护。
    • 在Android开发中,一个组件可以是一个功能模块,也可以是一个库、插件或服务。每个组件可以包含自己的业务逻辑、界面、资源和配置信息。
    • 组件化可以提高应用程序的可维护性、可测试性和可扩展性,同时也可以促进团队的协作与并行开发

模块化:

模块化编程是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,因此每个模块都包含仅执行所需功能的一个方面所需的一切。简单来说就是:模块化是将功能拆分,分成相互独立的模块,以便于每个模块只包含与其自身功能相关的内容。

    • 模块化是指将一个应用程序按照功能或业务领域划分为多个相互独立、低耦合的模块,每个模块专注于实现特定的功能或解决特定的问题。
    • 在Android开发中,一个模块通常对应一个功能或一个业务逻辑单元,例如登录模块、支付模块、消息推送模块等。
    • 模块化可以使得应用程序的代码结构更清晰、更易于理解和维护,同时也可以促进代码的重用和扩展。

插件化

插件化严格意义来讲,其实也算是模块化的观念。将一个完整的工程,按业务划分为不同的插件,都是分治法的一种体现。化整为零,相互配合。越小的模块越容易维护,插件化按理也算是模块化的一种体现,和组件化就不是一个概念了。

组件化的单位是组件(module)
插件化的单位是apk(一个完整的应用)

组件化实现的是解耦加快编译, 隔离不需要关注的部分
插件化实现的也是解耦加快编译,同时实现热插拔也就是热更新

组件化的灵活性在于按加载时机切换,分离出独立的业务组件,比如微信的朋友圈
插件化的灵活性在于是加载apk, 完全可以动态下载,动态更新,比组件化更灵活

组件化能做的只是, 朋友圈已经有了,我想单独调试,维护,和别人不耦合,但是和整个项目还是有关联的
插件化可以说朋友圈就是一个app, 我需要整合了,把它整合进微信这个大的app里面

本来就是一个系统,你把微信分为朋友圈,聊天, 通讯录按意义上划为独立模块,但并不是真正意义上的独立模块
本来就是不同的apk, 你把微信的朋友圈,聊天,通讯录单独做一个完全独立的app, 需要微信的时候插在一起,就是一个大型的app了
插件化的加载是动态的,这点很重要,也是灵活的根源。

总结:

组件化是基于重用,减少耦合;
模块化是根据功能模块的不同而拆分的;
插件化是将一个完整的工程,按业务划分为不同的插件。

其实组件相当于库,把一些能在项目里或者不同类型项目中可复用的代码进行工具性的封装。
而模块相应于业务逻辑模块,把同一类型项目里的功能逻辑进行进行需求性的封装。

其实从定义中可以看出,“组件” 更注重于代码的“复用”。 “模块” 更注重与一块业务能力的完整性。

组件、模块其实是从不同的角度来划分一个app。 组件更多的是从自下而上的视角,按照技术实现的思维划分实现代码,并将这些代码组装成一个app。 模块更多的是从自上而下的视角,按照业务划分实现代码。

相关推荐

  1. Android模块

    2024-04-23 03:02:01       35 阅读
  2. vue

    2024-04-23 03:02:01       50 阅读
  3. Vue待办事项(模块

    2024-04-23 03:02:01       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 03:02:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 03:02:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 03:02:01       82 阅读
  4. Python语言-面向对象

    2024-04-23 03:02:01       91 阅读

热门阅读

  1. 【c++】cpp之引用

    2024-04-23 03:02:01       35 阅读
  2. Environment Modules工具

    2024-04-23 03:02:01       33 阅读
  3. DBA面试(ORACLE ADG篇)

    2024-04-23 03:02:01       35 阅读
  4. Linux Makefile

    2024-04-23 03:02:01       29 阅读
  5. 富格林:扫清虚假套路实现安全

    2024-04-23 03:02:01       41 阅读
  6. 用户态和内核态的区别

    2024-04-23 03:02:01       31 阅读
  7. C语言C++面试题 (包答案)

    2024-04-23 03:02:01       76 阅读
  8. 信息收集的方式与工具

    2024-04-23 03:02:01       104 阅读