客户端架构设计和应用 | 青训营笔记

121 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第9天

没有完美的架构,需要不断对实现做重构。

一、架构面临的问题

每个阶段架构的问题都不同。

  • 初期的问题:如何抽象建模,如何技术选型。
  • 中期的问题:快速融合代码,适应业务变化。
  • 稳定期的问题:不断优化。
  • 后期的问题:流程没完没了,代码开始消亡。

不同技术领域的架构问题也不同但是也有相同的思想。

典型的客户端架构—— Android OS

  • 应用框架层:APP开发者直接使用的接口层,UI实现。
  • Binder IPC:提供跨进程访问的能力,APP可以高效的访问由系统进程暴露的能力。
  • 系统服务:提供窗口管理、相机、音视频等重要的系统能力。
  • 硬件抽象层:屏蔽底层不同驱动的差异,使得系统服务层可以快速适配到不同的硬件设备。
  • Linux内核:CPU、内存、唤醒服务等重要的驱动实现都是基于该层操作系统的核心实现。

二、常见的架构手段

小的架构手段——GoF设计模式(23种)

实现界面刷新:

  • 小的架构手段——MVC(不适合解决控制器复杂的问题)
  • 小的架构手段——MVP(通过表现层操作模型,不是直接调用模型,数据更新完会通知表现层,好处是数据和视图解耦,但是元素多的时候回调链路复杂)
  • 小的架构手段——MVVM(视图变化大,定义复杂,定义直接绑定视图模型,数据直接绑定在UI上)

小的架构手段——AOP

小的架构手段——IoC

大的架构手段——分层架构

  • 表现层:接收用户输入,获取数据,呈现界面
  • 业务层:处理业务数据,数据流转,安全检查
  • 持久层:提供数据的增删改查能力

大的架构手段——事件驱动架构(适用性广泛)

  • 存储层:按照特定的格式存储数据