有許多廣泛使用的架構模式。然而,其中六種非常常見且關鍵,這并非偶然。以下是這些模式,為什么你應該使用它們,以及何時使用它們。
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上,需要模塊化、可測試性和清晰度。