移动端架构的几点思考

对于一个以主要以图片加载为主的App, 最重要的核心技术点就是大量图片的加载,好的图片加载框架,项目已经成功了一半。

对于一个本地数据库为主的App,如何设计好本地数据库的读取和存储,如何选择一个适合的轮子去处理好数据库存在的问题,才是最根本的架构设计。

我见过一些项目,最表层项目结构设计的很好MVP+RxJava,但是最重要,最核心的数据库模块还是古老、低效的设计,导致的结果就是,涉及到核心的数据库操作就麻烦、复杂、低效。甚至出现整个项目组只有一两个人能看明白最核心的代码,这样下来无论是最外层的架构设计多么NB,整个项目是低效的。没有从最开始的时候设计好核心东西的架构设计,没有在开发过程花力气去优化最核心的模块。

最简单的就是最好的

我一直认为,最简单的东西往往最有力量。比如

首付5成,贷款加息50%

越多的解释,就显得心虚,解释就是掩饰。架构设计也是如此,越是简单的架构设计,越容易学会,合作的同事越容易接受,就像代码设计,自解释的代码比写满了注释的代码设计的要更好。

clean架构为什么不容易流行,因为太复杂了,它把Java Web开发那一套搬到了移动端,如果应用到项目中,可能除了架构设计者,没人能够完全明白整个架构设计。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相反,为什么MVC 和MVP容易推广,因为简单,可复制性强,无需思考,学习容易。谷歌官方开源了一套MVP架构设计思路,非常值得借鉴,除了写重复性代码多一些以外(重复性代码可以通过模板自动生成),代码易用性、维护性都是设计的典范。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码逻辑守恒

架构设计中有很多的设计模式、固定范式大部分都是围绕着分层进行设计的

软件开发中没有什么问题不能通过加一层来解决的
分层思想其实契合人类对事物的认知模式,各司其职,分工不同,从传统农业社会的架构-士、农、工、商,每个层级负责对应层级的事情,每个层级有既有隔离又有沟通。
移动端开发也是一样,从大层级划分,可以划分为业务层、持久层、UI层,从细分角度来看,又可以分层各种组件类,比如网络、图片、缓存、日志等等模块,而通过对这些组件的的组合形成更大的模块。各个模块之间既有数据的传递和流动,又会对各个层级之间数据的传递做限制。最明显的例子MVP框架,P层作为沟通的桥梁,负责M和V层数据的交互,但是又限制V和M层直接进行数据的交互,这样很大程度减少了数据流向复杂的问题。
总之,我认为架构设计是对代码逻辑二次划分,代码逻辑永远是守恒的,差别在于你是如何管理这些逻辑的。
MVP管理逻辑的办法很简单,就是将所有逻辑放到了P层中,保持M层和V层的纯粹性,但是毋庸置疑P层是会随着业务逻辑的增加,复杂度会产生巨大的增长,因此这个时候就需要对P层在做逻辑的转移。因此在对P层逻辑转移过程中,就产生了各种各样的helper类,结合各种各样的网络处理框架、RxJava响应式编程框架等等,这些东西都是为了逻辑转移而做的工作。
这篇文章不谈具体的移动端架构设计,更多的是从架构本身聊一下关于架构设计的一些思想,以及在实践过程中的一些想法,一家之言,欢迎探讨。

《设计思想解读开源框架》

第一章、 热修复设计

  • 第一节、 AOT/JIT & dexopt 与 dex2oat

  • 第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题

  • 第三节、热修复设计之热修复原理

  • 第四节、Tinker 的集成与使用(自动补丁包生成)

    第二章、 插件化框架设计

  • 第一节、 Class 文件与 Dex 文件的结构解读

  • 第二节、 Android 资源加载机制详解

  • 第三节、 四大组件调用原理

  • 第四节、 so 文件加载机制

  • 第五节、 Android 系统服务实现原理

    第三章、 组件化框架设计

  • 第一节、阿里巴巴开源路由框——ARouter 原理分析

  • 第二节、APT 编译时期自动生成代码&动态类加载

  • 第三节、 Java SPI 机制

  • 第四节、 AOP&IOC

  • 第五节、 手写组件化架构

    第四章、图片加载框架

  • 第一节、图片加载框架选型

  • 第二节、Glide 原理分析

  • 第三节、手写图片加载框架实战

    第五章、网络访问框架设计

  • 第一节、网络通信必备基础

  • 第二节、OkHttp 源码解读

  • 第三节、Retrofit 源码解析

    第六章、 RXJava 响应式编程框架设计

  • 第一节、链式调用

  • 第二节、 扩展的观察者模式

  • 第三节、事件变换设计

  • 第四节、Scheduler 线程控制

    第七章、 IOC 架构设计

  • 第一节、 依赖注入与控制反转

  • 第二节、ButterKnife 原理上篇、中篇、下篇

  • 第三节、Dagger 架构设计核心解密

    第八章、 Android 架构组件 Jetpack

  • 第一节、 LiveData 原理

  • 第二节、 Navigation 如何解决 tabLayout 问题

  • 第三节、 ViewModel 如何感知 View 生命周期及内核原理

  • 第四节、 Room 架构方式方法

  • 第五节、 dataBinding 为什么能够支持 MVVM

  • 第六节、 WorkManager 内核揭秘

  • 第七节、 Lifecycles 生命周期


    本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
    **
    [外链图片转存中…(img-6vsyQ5F8-1715117317664)]
    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值