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

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

组件化:

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

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

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

  1. 组件化(Componentization)

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

模块化:

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

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

插件化

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

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

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

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

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

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

总结:

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于python实现web漏洞挖掘技术的研究(django)

基于python实现web漏洞挖掘技术的研究(django) 开发语言:Python 数据库:MySQL所用到的知识:网络爬虫,SQL注入,XSS漏洞工具:pycharm、Navicat、Maven 系统的实现与漏洞挖掘 系统的首页面 此次的系统首页面是登录的页…

BootstrapAdmin Net7:基于RBAC的后台管理框架,实现精细化权限管理与多站点单点登录

BootstrapAdmin Net7:基于RBAC的后台管理框架,实现精细化权限管理与多站点单点登录 摘要 随着企业信息化建设的不断深入,后台管理系统在企业运营中扮演着越来越重要的角色。本文介绍了一款基于RBAC(Role-Based Access Control)的…

std::tuple介绍和使用

基本概念 std::tuple 是 C11 中引入的一个标准库类型,它代表了一个固定大小的不同类型值的集合。元组可以被看作是 std::pair 的泛化形式,std::pair 只能保存两个元素,而 std::tuple 可以保存任意数量的元素。 从概念上讲,它们类…

291个地级市资源错配指数、劳动和资本相对扭曲指数(2006-2021年)

01、数据介绍 资源错配指数(Misallocation Index)是一个用于衡量资源配置效率的指标,它衡量的是生产要素的配置是否合理,是否达到了最优的状态。资源错配指数越高,资源的利用效率越低。资源错配指数主要用于衡量各种生…

PWM波型-脉冲宽度调制

一、什么是PWM信号 PWM,英文全称Pulse Width Modulation,是脉冲宽度调制的缩写;简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程,为了成功地为企业定制实施ERP软件,需要注意和解决几个关键的问题: . 确立ERP系统实施和定制的决策者;. 做好前期咨询与调研工作;. 做好系统产品或项目迭代规划&#x…

Uds诊断协议的请求和响应的寻址

一根总线上挂载着很多ECU,那么基于CAN协议UDS的诊断请求报文,诊断仪是如何发给ECU的?如何精准的找到想要诊断的那个ECU?ECU又是如何将诊断响应的报文返回给诊断仪? 在UDS协议中,规定了诊断请求和响应报文发…

记录:阿里云服务器网站搭建(3)

Docker安装配置Tomcat 拉取镜像 docker pull tomcat:8启动一个tomcat容器用于拷贝配置文件 docker run -d -p 8080:8080 --name tomcat tomcat:8拷贝容器内tomcat配置文件和日志到本地准备映射 docker cp tomcat:/usr/local/tomcat/conf /mydata/tomcat/confdocker cp tomca…

WebStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 WebStorm是一款由JetBrains公司开发的强大的集成开发环境(IDE),专门用于前端开发。它提供了丰富的功能和工具,包括代码编辑器、调试器、版本控制集成等,使开发人员能够更…

LocalAi,Ollama+AnythingLLM搭建部署本地大模型AI知识库,汉化版本

AnythingLLM 是一个全栈应用程序,您可以使用商业现成的 LLM 或流行的开源 LLM 和 vectorDB 解决方案来构建私有 ChatGPT,无需任何妥协,您可以在本地运行,也可以远程托管并能够智能聊天以及您提供的任何文件。 AnythingLLM 将您的文…

人工智能大模型培训老师叶梓 探索知识库问答中的查询图生成:处理多跳复杂问题的新方法

在人工智能领域,基于知识库的问答(KBQA)技术正变得越来越重要。它使得机器能够理解自然语言问题,并从结构化的知识库中检索答案。然而,面对多跳复杂问题,传统的KBQA方法往往力不从心。近期,研究…

GitLab存储空间满了

1. 背景 前两天同事反馈,代码推送不到服务器了,GitLab报500错误,我等了一天都变好。登录服务器查看GitLab虚拟机,发现磁盘满了。于是用如下命令释放出了一部分空间: journalctl --vacuum-time1s 释放了1秒前的日志&am…

芒果超媒的“乘风破浪”,差了一点市场海浪的反馈

4月21日晚间,芒果超媒发布了2023年度&2024一季度报告。 芒果超媒2023年实现营业收入146.28亿元,同比增长4.66%;净利润35.56亿元,同比增长90.73%;基本每股收益1.90元。公司拟每10股派发现金红利1.8元。2024年第一季…

数据可视化(八):Pandas时间序列——动态绘图,重采样,自相关图,偏相关图等高级操作

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

怎么将“学生信息表.csv”由CSV格式转换成JSON格式

怎么将“学生信息表.csv”由CSV格式转换成JSON格式 将CSV文件转换为JSON格式,你可以使用Python的内置库如csv和json。下面是一个简单的示例,说明如何执行此转换: 首先,确保你已经安装了Python。 创建一个Python脚本(…

腾讯云服务器价格明细表2024年最新(CPU内存/带宽/磁盘)

腾讯云服务器价格明细表2024年最新(CPU内存/带宽/磁盘)腾讯云服务器租用优惠价格表:轻量应用服务器2核2G3M价格61元一年,2核2G4M价格99元一年、135元15个月、540元三年,2核4G5M带宽165元一年、252元15个月、756元3年&a…

动态规划(Dynamic Programming,简称 DP)

动态规划(Dynamic Programming,简称 DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。通过保存和重用已经解决的子问题的解,来避免重复计算,从而大…

mybatis使用xml中的if-else/choose

最近需要使用 xml 文件来实现一些增删改查,此文对 其中的 if-else 加以说明 背景: 有一个引用类,假设叫 Student public class Student {private String name; private String address; private Integer yn;}现在我们查询条件也被封装成一个…

2024 应届校招经验分享(非互联网篇)

📢📢📢 2024年应届毕业生,浙江大学计算机研究生。自23年秋招开始至今,博主先后拿到了互联网行业、机械制造行业、国企央企、高校体制等多家企业和单位的数十个Offer,了解多行业中的计算机求职方向&#xff…

Java转go,我用了12小时,10小时在解决环境问题

Part1 问题背景 作为一个资深的Java开发者,我深知面向对象的高级语言,语法是不用学的。需要的时候搜索就可以了,甚至可以用ChatGPT来写。 之前我做一个安全多因素校验服务。因为是临时服务,扩展性上基本没有要求,为了快…