这是我参与「第四届青训营 」笔记创作活动的第9天
没有完美的架构,需要不断对实现做重构。
一、架构面临的问题
每个阶段架构的问题都不同。
- 初期的问题:如何抽象建模,如何技术选型。
- 中期的问题:快速融合代码,适应业务变化。
- 稳定期的问题:不断优化。
- 后期的问题:流程没完没了,代码开始消亡。
不同技术领域的架构问题也不同但是也有相同的思想。
典型的客户端架构—— Android OS
- 应用框架层:APP开发者直接使用的接口层,UI实现。
- Binder IPC:提供跨进程访问的能力,APP可以高效的访问由系统进程暴露的能力。
- 系统服务:提供窗口管理、相机、音视频等重要的系统能力。
- 硬件抽象层:屏蔽底层不同驱动的差异,使得系统服务层可以快速适配到不同的硬件设备。
- Linux内核:CPU、内存、唤醒服务等重要的驱动实现都是基于该层操作系统的核心实现。
二、常见的架构手段
小的架构手段——GoF设计模式(23种)
实现界面刷新:
- 小的架构手段——MVC(不适合解决控制器复杂的问题)
- 小的架构手段——MVP(通过表现层操作模型,不是直接调用模型,数据更新完会通知表现层,好处是数据和视图解耦,但是元素多的时候回调链路复杂)
- 小的架构手段——MVVM(视图变化大,定义复杂,定义直接绑定视图模型,数据直接绑定在UI上)
小的架构手段——AOP
小的架构手段——IoC
大的架构手段——分层架构
- 表现层:接收用户输入,获取数据,呈现界面
- 业务层:处理业务数据,数据流转,安全检查
- 持久层:提供数据的增删改查能力
大的架构手段——事件驱动架构(适用性广泛)
- 存储层:按照特定的格式存储数据