成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件設計模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

開發 架構
本文主要將MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER等,幾個常見的設計模式做一個匯總的介紹。

軟件架構設計是將軟件一些共有的特征轉換為滿足業務需求和技術要求的結構化方案的過程。軟件架構設計的目的是為了實現系統的長期可維護性、可擴展性、可靠性和安全性,以滿足業務需求和未來可能的變化。

在過去的幾年里,軟件架構的設計模式層出不窮,每一個模式的出現,都是試圖想使代碼更可讀、更容易于測試、更易于維護以及讓開發人員更輕松。但同時,每個模式的出現也都有適應的場景和優劣。

本文主要將MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER等,幾個常見的設計模式做一個匯總的介紹。

1.MVC

MVC是一種體系架構,經典MVC模式中,M是指模型,V是視圖,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。其中,View就是用戶界面。

使用MVC的框架如:SpringMVC、Ruby on rails、Django、AngularJS、React、Express.js。

2.MVP

MVP的全稱是Model-View-Presenter,是從經典的MVC模式演變而來,也是一種包含模型、視圖和視圖的體系結構。

MVP和MVC的基本思想有許多相通的地方,例如:Controller/Presenter負責邏輯的處理,Model提供數據,View負責顯示。

但MVP與MVC有著一個重大的區別在于MVP中視圖中不包含任何邏輯,只是作為應用程序的外觀,Presenter充當模型和視圖之間的中間人。MVP中的View并不直接使用Model,它們之間的通信是通過Presenter(MVC中的Controller)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會直接從Model中讀取數據而不是通過Controller。

在Android開發中,MVP模式克服了MVC模式的這些挑戰,并且提供了一種簡單的方法來構造項目代碼。

3.MVVM

MVVM是Model-View-ViewModel的簡寫。其本質是MVC的改進模式。主要區別在于視圖和模型,視圖和模型保存了從模型轉換數據的代碼,并直接將數據變化發送到視圖,有助于保持每個模型直接與其各自的視圖交互,而不必擔心不同的模型影響到其它視圖。

MVVM模式有助于將應用程序的業務和表示邏輯與用戶界面 (UI) 清晰分離。保持應用程序邏輯和UI之間的清晰分離有助于解決許多開發問題,并使應用程序更易于測試、維護和演變。它還可以顯著提高代碼重用率,并允許開發人員和UI設計人員在并行開發各自的應用部分時能夠更輕松地進行協作。

使用MVVM的框架如:MVVMLight、Cinch、Prism、Caliburn、MVVM Helpers、MVVMFoundation。

4.HMVC

HMVC(全稱Hierarchical-Model-View-Controller),也可以叫做 Layered MVC。顧名思義,就是按等級劃分的 MVC 模式,簡單的解釋就是把MVC又細分成了多個子 MVC,每個模塊就分成一個 MVC。

使用 HMVC 的好處就是可以降低各個功能模塊之間的耦合性,提高代碼復用性,使得每個功能都可以獨立出來,每個模塊都有自己的 MVC 結構,這就有點像ActiveX控件,每個控件都有自己的行為,控件之間互不影響。這種架構風格的將應用程序調整為更小、更易于管理、可以獨立運行的模塊。由于在創建新模塊時控制器能夠相互調用,因此要在應用程序中進行功能擴展更加容易。

許多PHP框架是基于HMVC,例如:FuelPHP、PHPPixie、ClanCats。

5.MVA

MVA(全稱:Model View Adapter),MVA和MVC都試圖解決同樣的問題,但MVA與MVC有一個區別:MVC的模型、視圖和控制器的關系形成一個三角形,模型、視圖和控制器作為頂點,一些信息可以在模型和視圖之間流動,而不受控制器的直接控制;而MVA使用適配器(Adapter)代替控制器,MVA通過線性地安排模型、適配器或中介控制器和視圖,而沒有模型和視圖之間的任何直接連接,在這種架構中,模型和視圖不知道彼此的存在。在單個模型和視圖之間,可以有許多適配器,它們修改來自模型的信息在視圖中的呈現方式。

當我們需要將數據與GUI分離時,MVA就很有參考價值。在一些移動應用開發的框架中經常被使用。

6.MVI

MVI與MVP和MVVM相比,它的設計模式考慮到了反應式編程。MVI模式的數據流是單向的,從Model到View。View不能直接修改狀態,而是通過發送Intent到Model來更新狀態并將其發送回View。

MVI架構模式包括三個主要組件:Model(模型)、View(視圖)和Intent(意圖)。

  • Model表示應用程序的狀態,是一個不可變的數據結構,保存了渲染UI所需的所有信息;
  • View負責渲染UI,從Model接收到狀態信息并更新UI;
  • Intent表示用戶執行操作的意圖,用以觸發改變Model中的狀態;

7.VIPER

VIPER(全稱:View-Interactor-Presenter-Entity-Router) 即:視圖、交互器、演示器、實體、路由器。VIPER是由Uber的iOS開發團隊提出的一種適用于iOS應用程序的設計模式。VIPER架構的目的是將應用程序分解為不同的模塊,使得應用程序更容易維護和擴展,并且各個模塊之間相互獨立,減少了耦合性。

VIPER架構模式包含以下五個模塊:

  • View(視圖):負責用戶界面的展示和響應用戶操作,它與用戶交互,并將用戶的操作傳遞給Presenter。
  • Interactor(交互器):負責應用程序的業務邏輯,它提供了數據和功能的接口,供Presenter使用。
  • Presenter(演示者):負責將View和Interactor連接起來,它接收View傳遞過來的用戶操作,然后根據業務邏輯調用Interactor提供的接口,最后再將處理結果展示到View上。
  • Entity(實體):負責存儲應用程序的數據,它包含了應用程序中需要處理的所有數據。
  • Router(路由):負責處理不同模塊之間的跳轉和導航,它根據Presenter的指令,決定展示哪個View,同時也負責數據的傳遞。

VIPER架構的優點是明確的職責分離和解耦,每個模塊都有明確的職責和接口,方便團隊合作開發和維護。它還可以提高應用程序的可測試性,每個模塊都可以進行單元測試,減少了代碼的出錯率。

責任編輯:趙寧寧 來源: andflow
相關推薦

2023-04-11 07:50:27

軟件架構設計

2017-04-01 08:30:00

MVCMVPMVVM

2017-03-31 20:45:41

MVCMVPMVVM

2011-07-21 14:33:02

設計模式

2018-03-21 16:19:40

MVCMVPMVVM

2019-08-12 14:45:50

軟件設計Java

2024-03-11 00:00:00

應用架構開發

2018-10-29 11:41:22

架構MVCAndroid

2010-08-11 09:15:07

設計模式Python

2023-11-08 08:21:52

MVPMVVMMVI

2023-10-19 13:43:00

設計模式軟件設計

2014-03-17 11:05:00

ScriptCode Blocks

2019-09-11 08:52:24

MVCMVPMVVM

2019-10-30 14:58:45

MVCAndroid表現層

2011-07-14 14:46:46

設計模式

2012-04-05 11:35:07

.NET

2013-06-07 11:31:36

面向對象設計模式

2015-12-04 09:33:15

程序員前端演進史

2009-07-24 13:54:39

MVVM模式

2013-07-31 13:13:50

Windows PhoMVVM模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.四虎.com| 日韩爱爱网 | 日韩中文在线视频 | 伊人一区 | 一区二区三区在线播放视频 | 欧美国产精品一区二区 | 国产高清一区二区三区 | 成年人在线观看视频 | 国产成人免费视频网站高清观看视频 | 欧美一级特黄aaa大片在线观看 | 亚洲国产一区二区三区在线观看 | 婷婷久久五月天 | 中文字幕一区二区三区精彩视频 | 少妇黄色| 久久精品视频播放 | 久久国内精品 | 黄色毛片免费视频 | 91久久精品日日躁夜夜躁国产 | 亚洲网站免费看 | 2019天天干天天操 | 久久久精品视 | 欧美日韩国产一区二区三区 | 中文字幕久久精品 | 国产精品亚洲片在线播放 | 精品九九久久 | 一区二区三区在线免费观看 | 亚洲视频在线看 | 成人做爰69片免费观看 | 欧美视频三区 | 亚洲一区中文字幕 | 中文在线一区 | 久草在线 | 成人av在线播放 | 国产一区二 | 日韩成人| 久久精品一区二区三区四区 | 日韩三级精品 | www.色.com| 国产不卡一区 | 粉嫩av在线| 成年人在线观看 |