1.模型-视图-控制器(MVC)
这是最早采用并广泛使用的架构模式之一。其主要目标是将应用程序的数据、用户界面和控制逻辑分离为三个相互连接的组件。模型管理数据和逻辑,视图显示信息,控制器连接模型和视图,处理用户输入。使用场景: 适用于具有明确数据处理和UI分离的Web应用程序。
2.模型-视图-Presenter(MVP)
这种模式从MVC演变而来,旨在通过将视图与模型解耦,通过Presenter充当中间人来解决MVC在事件驱动环境中的缺点。模型管理数据,视图显示数据并将用户命令发送给Presenter,而Presenter从模型检索数据并将其呈现给视图。使用场景: 侧重于测试和UI逻辑的应用程序,如Android应用程序。
3.模型-视图-Intent(MVI)
这是一种采用单向数据流的响应式架构,确保在给定状态下,UI保持一致。模型表示状态,视图反映视图状态,而意图表示更改状态的用户交互。广泛用于具有状态一致性关注的Reactive应用程序或框架,如使用RxJava的应用程序。
4.模型-视图-ViewModel(MVVM)
MVVM出现是为了解决UI开发中的复杂性,提倡采用一种无需了解UI组件的ViewModel处理视图逻辑的方法。在这种情况下,模型管理和显示数据,而ViewModel保存和包含与UI相关的数据。这个模型非常适用于UI丰富的应用程序或具有数据绑定的平台,如使用LiveData的WPF或Android。
5.模型-视图-ViewModel-Coordinator(MVVM-C)
在MVVM的基础上引入Coordinator来处理导航,将其与View和ViewModel解耦。这个模型非常适用于较大的应用程序,特别是在IOS上,复杂的导航需要与视图逻辑分离。
6.View-Interactor-Presenter-Entity-Router(VIPER)
这是一种类似于Clean architecture的模块化架构。它强调可测试性和单一职责原则,通过将应用程序逻辑分解为不同的组件。在这个模型中,视图显示参数发送的内容,互动器包含每个用例的业务逻辑。Presenter包含准备内容的视图逻辑,实体包含主要模型对象,路由器包含导航逻辑。这个模型非常适用于复杂的应用程序,特别是在IOS上,需要模块化、可测试性和清晰度。