前言

在 Android 开发领域,选择适合的架构常常成为新手开发者们的一大挑战。从以往的MVC、MVP、MVVM再到MVI,每种设计模式都在其特定的背景下提供了一种组织和管理代码的方式,这让新手开发者感到困惑,不知道该如何抉择。
本文将采用分篇的形式深入探讨 Android 架构模式,分析它们的特点和应用场景,帮助新手开发者选择适合自己项目需求的架构。

为什么需要架构

首先一个灵活、稳定的应用程序就好比一座建筑物。随着 Android 应用的不断发展功能逐渐增多、业务越来越复杂可能导致应用难以维护。合适的架构设计可以帮助开发人员以良好的方式构建代码,从而使软件可靠且可扩展。相反不良的结构就会导致应用程序容易发生崩溃闪退以及需要大量人力维护。

架构图示

Clean Architecture(干净的架构)是 Uncle Bob(鲍勃叔叔)在2012年提出的一种架构,该架构核心在于关注点的分离。例如把业务逻辑与外部依赖(例如数据库、框架或用户界面)分离开来,从而实现了内部逻辑的独立性和可测试性。

根据上图总结一下

原则

  • 依赖原则:该原则指定每个圆只能依赖于最近的内圆进行通信 – 这就是使架构起作用的原因。
  • 抽象原则:中心圆是最抽象的,外圆是最具体的。抽象原则指定内圈应包含业务逻辑,外圈应包含实现细节。

优点

  • 可扩展性:由于清晰的架构,系统更易于扩展和修改。新的功能或变化可以相对容易地添加或修改,而不会对整体系统造成太大影响。
  • 可维护性:分层架构使得系统更易于维护和扩展。每个层级都有清晰的职责和边界,使得更改一个层级不会对其他层级产生太大影响,降低了代码耦合度。
  • 易于测试:清晰的边界和独立的层级使得单元测试和集成测试更加容易。因为业务逻辑和外部依赖被分开,可以更轻松地对核心业务逻辑进行测试。
  • 独立于框架和工具:核心业务逻辑与具体的框架和工具无关,这使得系统更灵活、更具移植性,可以方便地更换或升级框架。

缺点

  • 学习曲线:对于新手开发者来说,理解和应用 Clean Architecture 可能需要一定的时间来掌握如何正确地组织和设计系统。
  • 增加开发成本: 由于更多的抽象层和分层结构,可能会增加一定的开发成本和额外的工作量。
  • 较高的复杂性:实现 Clean Architecture 可能需要更多的设计和规划,有时候会增加项目的复杂度,特别是对于较小规模的项目可能显得有些过度设计。
  • 不适用于所有场景: 对于简单、小型的应用,采用 Clean Architecture 可能会显得过于繁琐,不一定是最佳选择。

官方文档:https://developer.android.com/jetpack/guide” />