您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

彻底理解Android架构,打造一个令人眼前一亮的项目架构

时间:2021-09-17 16:31:09  来源:  作者:像程序那样思考

架构究竟是什么?如何更好的理解架构?

我们知道一个App通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。

细分的话我们可以将其分为类、接口、任务流。

  • 类就是组成架构的核心;
  • 接口则是这些类之间通讯的路径、通讯的机制、通讯的期望结果;
  • 任务流则是描述系统如何使用类和接口完成某一项需求比如:一次网络请求。

我们在进行架构设计的时候,通常具有一定的目的性,用一句话来概括就是:架构设计的真正目的是为了解决软件系统的复杂度带来的问题,所谓高性能、高可用、高扩展。

我们将其大致可以分为:易扩展、易维护、可定制、可伸缩

  1. 易扩展:APP 必须能够在用户的 UV/PV 数量快速增加的情况下,保持软件合理的性能。只有这样在快速从 0 到 1 的需求迭代中才能后顾无忧。
  2. 易维护:软件系统的维护包括两方面,一是修复现有的 bug,二是将新的迭代需求开发到现有系统中去。一个易于维护的系统可以有效地降低人力和物力。
  3. 可定制:在同一个软件系统中可能面向的用户群体是不同的、多样的,需要满足根据用户群的不同和市场需求的不同进行定制化。比如一个 APP 中某些功能只针对特定用户开放。
  4. 可伸缩:在新技术出现的时候,一个软件系统应当允许接入新技术,从而对现有系统进行功能和性能的扩展。

现在我们在进行设计的时候,一般都会有要求高内聚、低耦合,以此来保证APP的高质量

为了方便大家理解,这边举个栗子:

低内聚,高耦合:

彻底理解Android架构,打造一个令人眼前一亮的项目架构

 

高内聚,低耦合:

彻底理解Android架构,打造一个令人眼前一亮的项目架构

 

大家觉得谁更好维护?更容易调整?出错了更容易排查?

我们在架构设计中最本质的目的就是管理复杂度,你听过的各种思想、原则、方法大多都是为了控制复杂度而设计出来的。

像依赖注入就是项目组件解耦中非常重要的一个手段,Dagger2 和 Hilt 都是在 Android 中最主要的依赖注入框架

依赖注入其实并不是一个很神秘的概念,往往在不经意间我们就使用了依赖注入。依赖注入应用了IOC控制反转的原理,简单来说就是在类的外部构造依赖项,使用构造器或者 setter 注入。

使用依赖注入可以为我们带来什么好处呢?

  • 重用组件: 因为我们在类外部构造依赖项;
  • 组件解耦: 当我们需要修改某个组件的实现时,不需要在项目中进行大量变更;
  • 易测试: 我们可以向依赖方注入依赖项的模拟实现,这使得依赖方的测试更加容易;
  • 生命周期透明: 依赖方不感知依赖项创建 / 销毁的生命周期,这些可以交给依赖注入框架管理。

我们都知道Dagger是一个早期的依赖注入库,但确实不好用,需要配置很多东西。虽然它能很好帮我们解耦各个模块之间的强关联性,提高项目的健壮性。但其却以羞涩难懂、难用而闻名,吓退了很多的开发者。

Hilt是 Dagger2 的二次封装,Hilt 本质上是对 Dagger 进行场景化。是一个功能强大且用法简单的依赖注入框架,同时也可以说是近期 Jetpack 家族中最重要的一名新成员。但Hilt涉及的知识点也是相当繁多,即使它将 Dagger2 的用法进行了大幅的简化,如果你之前对于依赖注入完全没有了解,直接上手 Hilt 还是会有不少的困难。

在这里问大家几个问题,看看能不能回答上来:

  • 你知道面试官为什么要问你IOC吗?
  • 你知道被问的原理包含哪些吗?
  • 你知道这些原理是如何指导我们代码实践开发的吗?
  • 你知道如何从架构层面设计我们的IOC框架解决项目问题?
  • 你知道代码重构中的痛点问题是如何处理的吗?

 

说了这么多,那么我们如何学习Hilt,将IOC技术融入进我们的架构设计中呢?

为了帮助大家站在高级工程师的角度,深度理解IOC技术在移动端的实战应用,同时掌握移动端流行IOC框架Hilt与Dagger2的实战应用与实现原理。

在这里分享一份由大佬亲自收录整理的学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

真心希望可以帮助到大家,Android路漫漫,共勉!



Tags:Android架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
组件化定义组件化是建立在模块化思想上的一次演进,一个变种。组件化本来就是模块化的概念。核心是模块角色的可转化换性,在打包时,是library;调试时,是application。组件化的单位...【详细内容】
2022-07-05  Tags: Android架构  点击:(38)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  Tags: Android架构  点击:(144)  评论:(0)  加入收藏
▌简易百科推荐
方法一:修改ro.product.model的值,在build\tools\buildinfo.sh发现ro.product.name对应的宏的名称,此处为PRODUCT_MODELecho “ro.product.model=$PRODUCT_MODEL”在device\med...【详细内容】
2022-08-03  积硅步以致1000里    Tags:Android   点击:(1)  评论:(0)  加入收藏
计划将于明年年底上线的 Android N 系统将不再依赖目前所使用的 Java API,转而替代使用 OpenJDK,这是来自甲骨文的开源Java 开发套件,谷歌表示由于Android 是“开源平台”,所以...【详细内容】
2022-08-03  IT小白进阶之路    Tags:Android N   点击:(2)  评论:(0)  加入收藏
Bitmap是什么Bitmap的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。Bitmap 是位图...【详细内容】
2022-08-02  Android攻城狮狮狮  掘金  Tags:Bitmap   点击:(1)  评论:(0)  加入收藏
一款APP如何才能被称为“好用”呢?如何才能够受到大家的喜爱呢?其实这非常简单:功能强大和性能优越。说到性能,首先就是APP的启动性能问题,正所谓万事开头难,这个“开头”在这里可...【详细内容】
2022-08-01  Android秃老师    Tags:Android开发   点击:(4)  评论:(0)  加入收藏
前言在日常开发过程中,可能会遇到这些问题:滑动冲突、点击事件响应冲突等问题。那么造成这些问题的根源到底是什么呢?其实这都是Android事件分发导致的,只有掌握了事件分发机制,...【详细内容】
2022-08-01  前端Vs过客    Tags:Android   点击:(4)  评论:(0)  加入收藏
不知不觉中2022年已经过了大半,马上又要到金九银面试季,相信不少心里痒痒的朋友们已经提前开始准备面试了。近些年来面试的要求是越来越高,整个行业越来越卷。很多求职者抱怨大...【详细内容】
2022-07-31  像程序那样思考    Tags:Android   点击:(1)  评论:(0)  加入收藏
生成patchgit format-patch -1 commitid 合入patchgit am 0001-.patch 解决合入patch冲突1. git apply --reject 0001-.patch (强制把不冲突的文件先合并,有冲突的会生成.rej...【详细内容】
2022-07-29  积硅步以致1000里    Tags:Android   点击:(10)  评论:(0)  加入收藏
1.在AIDL中添加自定义的系统接口frameworks/base/core/java/android/app/IActivityManager.aidl如:void setDeviceName(String name);2.在Manager中添加对外的API接口framewo...【详细内容】
2022-07-27  积硅步以致1000里    Tags:Android   点击:(7)  评论:(0)  加入收藏
工具列表1. Nexus 手机一台 ,USB线一根2. ADB,FastBoot软件工具3. 手机Root教程一份先来说说Nexus手机Nexus手机,号称谷歌亲儿子,因为这台手机的操作系统是Android原生系统,没有...【详细内容】
2022-07-27  程序员阿灏    Tags:Android   点击:(9)  评论:(0)  加入收藏
RxJava在Android开发中已经算是无人不知无人不晓了,加之它与Retrofit等流行框架的完美结合,已经成为Android项目开发的必备利器。随手记作为一个大型项目,引入三方框架一直比较...【详细内容】
2022-07-26  Android秃老师    Tags:RxJava   点击:(14)  评论:(0)  加入收藏
站内最新
站内热门
站内头条