六種最關(guān)鍵的架構(gòu)模式
有許多廣泛使用的架構(gòu)模式。然而,其中六種非常常見且關(guān)鍵,這并非偶然。以下是這些模式,為什么你應(yīng)該使用它們,以及何時(shí)使用它們。
1.模型-視圖-控制器(MVC)
這是最早采用并廣泛使用的架構(gòu)模式之一。其主要目標(biāo)是將應(yīng)用程序的數(shù)據(jù)、用戶界面和控制邏輯分離為三個(gè)相互連接的組件。模型管理數(shù)據(jù)和邏輯,視圖顯示信息,控制器連接模型和視圖,處理用戶輸入。使用場景: 適用于具有明確數(shù)據(jù)處理和UI分離的Web應(yīng)用程序。
2.模型-視圖-Presenter(MVP)
這種模式從MVC演變而來,旨在通過將視圖與模型解耦,通過Presenter充當(dāng)中間人來解決MVC在事件驅(qū)動環(huán)境中的缺點(diǎn)。模型管理數(shù)據(jù),視圖顯示數(shù)據(jù)并將用戶命令發(fā)送給Presenter,而Presenter從模型檢索數(shù)據(jù)并將其呈現(xiàn)給視圖。使用場景: 側(cè)重于測試和UI邏輯的應(yīng)用程序,如Android應(yīng)用程序。
3.模型-視圖-Intent(MVI)
這是一種采用單向數(shù)據(jù)流的響應(yīng)式架構(gòu),確保在給定狀態(tài)下,UI保持一致。模型表示狀態(tài),視圖反映視圖狀態(tài),而意圖表示更改狀態(tài)的用戶交互。廣泛用于具有狀態(tài)一致性關(guān)注的Reactive應(yīng)用程序或框架,如使用RxJava的應(yīng)用程序。
4.模型-視圖-ViewModel(MVVM)
MVVM出現(xiàn)是為了解決UI開發(fā)中的復(fù)雜性,提倡采用一種無需了解UI組件的ViewModel處理視圖邏輯的方法。在這種情況下,模型管理和顯示數(shù)據(jù),而ViewModel保存和包含與UI相關(guān)的數(shù)據(jù)。這個(gè)模型非常適用于UI豐富的應(yīng)用程序或具有數(shù)據(jù)綁定的平臺,如使用LiveData的WPF或Android。
5.模型-視圖-ViewModel-Coordinator(MVVM-C)
在MVVM的基礎(chǔ)上引入Coordinator來處理導(dǎo)航,將其與View和ViewModel解耦。這個(gè)模型非常適用于較大的應(yīng)用程序,特別是在IOS上,復(fù)雜的導(dǎo)航需要與視圖邏輯分離。
6.View-Interactor-Presenter-Entity-Router(VIPER)
這是一種類似于Clean architecture的模塊化架構(gòu)。它強(qiáng)調(diào)可測試性和單一職責(zé)原則,通過將應(yīng)用程序邏輯分解為不同的組件。在這個(gè)模型中,視圖顯示參數(shù)發(fā)送的內(nèi)容,互動器包含每個(gè)用例的業(yè)務(wù)邏輯。Presenter包含準(zhǔn)備內(nèi)容的視圖邏輯,實(shí)體包含主要模型對象,路由器包含導(dǎo)航邏輯。這個(gè)模型非常適用于復(fù)雜的應(yīng)用程序,特別是在IOS上,需要模塊化、可測試性和清晰度。