MVVM和MVI架构模式合并为一个最好的架构,为任何Android项目提供了完美的架构。
有太多可用的体系结构模式,每种模式都有其优缺点。所有这些模式都试图实现相同的架构基本原理:
1、关注点分离(SoC):这是一种设计原则,用于将计算机程序分为不同的部分,以便每个部分都可以解决一个单独的关注点。关注点是提供问题解决方案时重要的事情。
该原则与面向对象编程的“ 单一责任原则”密切相关,后者 指出“每个模块,类或功能都应对软件提供的功能的一部分负责,而责任应由第三方完全封装。类,模块或功能。”
2、由模型驱动的UI :应用程序应从模型(最好是持久性模型)驱动UI。模型独立于View对象和应用程序组件,因此它们不受应用程序生命周期和相关问题的影响。
让我们来看看一些流行的架构模式的总结:
MVC架构
Trygve Reenskaug的模型-视图-控制器体系结构是所有现代体系结构模式的基础。让我们看看在Wikipedia页面上定义的每个组件的责任
模型负责管理应用程序的数据。它从控制器接收用户输入。
视图表示以特定格式表示模型。
控制器响应用户输入并在数据模型对象上执行交互。所述控制器接收输入,任选验证它,然后将输入到模型。
因此,模型负责表示视图的状态,结构和行为,而视图仅表示该模型。
MVVM架构
在Model-View-ViewModel体系结构中,视图具有ViewModel的实例,并且它根据用户输入/操作调用相应的函数。此外,视图会观察ViewModel的不同可观察属性以进行更改。ViewModel根据业务逻辑处理用户输入,并修改各自的可观察属性。
MVI架构
在Model-View-Intent体系结构中,视图公开视图事件(用户输入/操作),并观察模型以了解视图状态的变化。我们处理视图事件,并将其转换为各自的意图,并将其传递给模型。模型层使用intent和previous view-state创建一个新的不可变视图状态。因此,这种方式遵循单向数据流原理,即数据仅在一个方向上流动:“视图”>“意图”>“模型”>“视图”。
总而言之,MVVM体系结构的最佳部分是ViewModel,但我认为它不遵循MVC模式中定义的模型的概念,因为在MVVM中,本地数据库会被视为模型,并且视图从ViewModel观察到状态变化多个可观察的属性。视图并不是