前言
前前后后经历过大项目、小项目,跨平台,小程序,Nodejs 服务等等,目前在做的 Rom 开发,定制各种手机中的奇葩需求,从应用层到 Framework 层,再到 C++层,再到驱动,最终到 Linux,研究过 java 虚拟机,虽然没研究过 ART 或者老牌的 Dalvik 虚拟机,但原理都差不多,并不影响我对 android 有一个全局的认识,今天我们的主题是架构,其实对架构的理解一定要宏观一点,大到手机操作系统架构,小到代码逻辑设计的架构,一句老话讲的好,也代表了我对架构的整体理解:没有最好的架构,只有最合适的架构。下面我们聊聊,一个好的架构是什么样子的,该怎么去判断呢。
好的架构应该有的优势
大道至简
简单直白、朴实无华、科学至真、人生至理、灵魂至美,简单是一个架构好的灵魂。这是考验一个架构师的终极指标,如何保证简单的设计,来让大部分人接受,用起来简单,又可以保证架构的稳定性,保证不被破坏,很难很难。
万变不离其宗
以不变应万变,好的架构,总能抓住不变的部分,将变的部分做好抽象,满足各类场景,在我们代码的世界里就是做好接口和抽象。
抽丝剥茧
丝得一根一根地抽,茧得一层一层地剥,对的,一个好的架构绝对是层次分明,各司其职,做人做事一样,做好自己不越界是门技术活。世间万物,都是独立的存在,可以很近,又可以很远。代码架构的设计当然离不开层次的设计。
领域驱动
架构不是满足所有领域,不是大杂烩,他是针对特定领域的最完美的总结,关注特定领域,保持初心。
Android 架构演进
MVC > MVP > MVVM
我们先回顾一下 google 为我们做了什么,一开始我们接触 android,大家都在用 MVC,甚至可以说没有架构,而且那个时候 app 是真的简单,但随着不断的迭代,问题越来越多,google 也发现了这个问题,于是 github 开源了 MVP 架构的示例,教我们如何整合框架,如何在架构设计上保证业务的发展需求,再到现在主推的 MVVM,其实不难发现一个共性,WEB 端大家都知道吧,你看现在最火的 React、Vue,不都是 MVVM 的架构吗(有人说不是,有人说是,这里不多解释,我们不应该纠结是不是,应该理解 M-V 、 V-M 是数据绑定 UI,无非是单向还是双向的,都属于一种理念吧,理解就行。)
原生 > React Native > Flutter
一个好的架构只是 MVC 到 MVVM 吗?我不这么认为,从一开始我们接触到原生的 Android 开发,到后来大火的 React Native,我们 16 年还专门集成了 React Native 模块,但做了几个迭代后放弃了,我们发现为了适配 Android、Ios 也花费了很多时间,倒不如用原生做的好用。目前最火的 Flutter,也是 Google 主推的跨平台框架,而且我们现在就在 C 端项目中集成了,效果还不错,虽然也是有很多问题,但总体来看比 React Native 要好,还有一点 Google 内部正在开发的另一个操作系统 Fuchsia 的 UI layer 采用的是 Flutter,也就是说 Flutter 天然可以支持 Android、IOS 以及未来的 Fuchsia。在大前端方向,对于跨平台开发中一直在不断迭代中寻找更好、更优的解决方案,目前来看 Flutter 还是更有优势
Java > Kotlin,Dart
来说说语言,你说语言属于架构吗?我也不知道,但这是我架构的时候考虑的一个方向,语言是我们组织架构最基础的单元,kotlin 的普及,应该不仅仅是 google 认为语言不错,让我们广大开发者使用,其实这里面涉及了很多东西,我们知道最新的 android 引用的是 open jdk,前几年的官司打个不停,付出了不少人力财力,这肯定不是我们还要考虑的,但有一点可以肯定,kotlin 语言确实是个趋势,因为他有更合理的设计,更安全的性能表现,更加简洁的代码,当然你可以用 java 写 android 写到老,我也不认为你用 kotlin 写就一定比 java 写的好,看个人选择吧。再说说 Dart,这个我就有点不理解,为啥 Flutter 一定要用 Dart 写,好像 Google 工程师这么回答:说 Dart 就在隔壁啊,好沟通。哈哈。
小总结
通过上面的闲扯,我们基本已经有了架构的雏形了吧
MVVM + 原生 + Kotlin 或
MVVM + 原生、Flutter + Kotlin、Dart 等等.. 自己组合吧,我目前选择第二种,相信很多人的项目都已经是这样了。那么接下来我们就要实现这样的架构,架子有了,就该塞东西了,这样就显得饱满一些。
结语
从 Android 的架构演进,不难看出未来的世界肯定是大前端的,所谓的大前端也许是大佬们一个概念,但从这几年好多大统一的技术出现,感觉未来不远,也许就是明天,在这奉劝各位读者,提升自己就在现在,JS、Dart、Java、Kotlin、Python 等等吧,T 型人才未来才是互联网的中流砥柱,不光要学好 android,也要横行发展哦。下面给大家推荐一个系统学习的方式:
高级架构技术进阶脑图、Android开发面试专题资料
Android架构视频+字节跳动面试真题解析+学习笔记.
↑↑↑以下所有内容戳此领取
- Android高级架构视频
- Android开发核心知识点笔记
网友评论