Android架构设计最佳实践#
软件项目架构理念#
软件项目开发模型#
- 边做边改
- 瀑布流
- 快速原型
- 增量模型
- 螺旋模型
- 喷泉模型
- 智能模型
- HRAD模型
- 混合模型
控制的宏观与微观#
宏观控制:
- 系统部署流程,数据流向清晰掌握
- 模块主线,分支逻辑清晰掌握
- 系统瓶颈,指标阈值清晰掌握
- 模块中哪些是对一致性要求高的,清晰掌握
- 模块中哪些是对可用性要求高的,清晰掌握
- CAP原则的取舍
- 异常容错机制、自恢复机制的实现,清晰掌握
- 软件生命周期全流程干预,需求评审,软件开发,落地方案
微观控制:
- 技术语言选型,kotlin、java、h5、Flutter、vue
- 实现方案选型,基于CAP原则、可用性、一致性、成本、资源等考虑
- 机器设备选型,CPU、操作系统、磁盘、屏幕、传感器
- 网络环境控制,服务器网络、客户端设备网络
- 指标监控上报机制,参考稳定性优化的十大指标
软件架构方法与技巧#
- 切分与扩展,业务拆分,架构可扩展;合理拆分业务,合理扩展架构
- 主动发现,
- 自动化
- 灰度升级,先发布功能的一小部分,逐步发布功能的全部范围
- 过载保护,超过指标阈值,保持核心服务可用,非核心服务暂停;扩容资源,任务排队
- 负载均衡,流量均匀分配;进程资源均匀分配
- 柔性,不必非0即1,不必追求是、否;不必追求一损俱损
- 回弹能力,牺牲次要能力,保住主要功能运行
软件设计原则#
- 开闭原则:扩展开发、修改关闭
- 里式替换:子类尽可能继承父类,不要覆盖父类非抽象方法,尽可能重写父类同名方法
- 依赖倒转:针对接口编程,而不依赖具体;通过接口实现模块、类之间的调用
- 接口隔离:多个接口好于1个接口
- 迪米特:最少知道原则,1个对象尽可能减少与其他对象接触
- 合成复用:多使用合成、聚合,少使用继承进行扩展
软件架构模式#
- 客户端架构:MVC、MVP、MVVM、MVX
- 软件服务模式:BAAS区块链即服务、SAAS软件即服务、PAAS平台即服务、IAAS基础设施即服务
移动端架构理念#
开发架构#
- 组件化
- 插件化
- 热补丁
- 混合开发
- 跨平台开发
Clean Architecture#
- Android Application Architecture (中文翻译)
- Architecting Android…The evolution
- Android-CleanArchitecture Code
MVVM & MVP & MVC&MVI#
- MVP for Android: how to organize the presentation layer
- ANDROID DATABINDING: GOODBYE PRESENTER, HELLO VIEWMODEL
- http://www.codeproject.com/Articles/166952/MVVM-in-Android
- Android应用开发架构概述
- Google官方架构Samples
- [译]使用MVI构建响应式安卓程序
Flux#
其它#
- Artchitecture Library
- Design for Offline: Android App Architecture Best Practices
- Robust and readable architecture for an Android App
- Android application architecture
著名公司架构#
谷歌#
安居客#
滴滴#
携程#
阿里#
- 陶钧谈淘宝客户端应用框架实践
- QCon旧金山演讲总结:阿里无线技术架构演进
- 手机淘宝构架演化实践
- 手机淘宝Android客户端架构
- 漫谈移动应用架构设计
- 大规模团队的Android开发
- 支付宝钱包客户端技术架构
百度#
腾讯#
饿了么#
著名个人架构#
kejunxia
Fly架构系列的作者
- 开发杂谈:Android移动应用架构发展简史
- Fly系列:5.1.0为插件化+MVP+Java版本;4.2.0为组件化+MVVM+Rxjava+Retrofit+DataBinding网络优化版;2.0.0为组件化+MVP版本
Android App的设计架构:MVC,MVP,MVVM与架构经验谈
包含架构目的、MVC架构实现、MVP架构实现、AOP设计、经验