日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

軟件設(shè)計(jì)模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

來源: 責(zé)編: 時(shí)間:2023-10-23 17:06:00 350觀看
導(dǎo)讀軟件架構(gòu)設(shè)計(jì)是將軟件一些共有的特征轉(zhuǎn)換為滿足業(yè)務(wù)需求和技術(shù)要求的結(jié)構(gòu)化方案的過程。軟件架構(gòu)設(shè)計(jì)的目的是為了實(shí)現(xiàn)系統(tǒng)的長(zhǎng)期可維護(hù)性、可擴(kuò)展性、可靠性和安全性,以滿足業(yè)務(wù)需求和未來可能的變化。在過去的幾年里

軟件架構(gòu)設(shè)計(jì)是將軟件一些共有的特征轉(zhuǎn)換為滿足業(yè)務(wù)需求和技術(shù)要求的結(jié)構(gòu)化方案的過程。軟件架構(gòu)設(shè)計(jì)的目的是為了實(shí)現(xiàn)系統(tǒng)的長(zhǎng)期可維護(hù)性、可擴(kuò)展性、可靠性和安全性,以滿足業(yè)務(wù)需求和未來可能的變化。3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

在過去的幾年里,軟件架構(gòu)的設(shè)計(jì)模式層出不窮,每一個(gè)模式的出現(xiàn),都是試圖想使代碼更可讀、更容易于測(cè)試、更易于維護(hù)以及讓開發(fā)人員更輕松。但同時(shí),每個(gè)模式的出現(xiàn)也都有適應(yīng)的場(chǎng)景和優(yōu)劣。3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

本文主要將MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER等,幾個(gè)常見的設(shè)計(jì)模式做一個(gè)匯總的介紹。3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

1.MVC

3zm28資訊網(wǎng)——每日最新資訊28at.com

MVC是一種體系架構(gòu),經(jīng)典MVC模式中,M是指模型,V是視圖,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。其中,View就是用戶界面。3zm28資訊網(wǎng)——每日最新資訊28at.com

使用MVC的框架如:SpringMVC、Ruby on rails、Django、AngularJS、React、Express.js。3zm28資訊網(wǎng)——每日最新資訊28at.com

2.MVP

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

MVP的全稱是Model-View-Presenter,是從經(jīng)典的MVC模式演變而來,也是一種包含模型、視圖和視圖的體系結(jié)構(gòu)。3zm28資訊網(wǎng)——每日最新資訊28at.com

MVP和MVC的基本思想有許多相通的地方,例如:Controller/Presenter負(fù)責(zé)邏輯的處理,Model提供數(shù)據(jù),View負(fù)責(zé)顯示。3zm28資訊網(wǎng)——每日最新資訊28at.com

但MVP與MVC有著一個(gè)重大的區(qū)別在于MVP中視圖中不包含任何邏輯,只是作為應(yīng)用程序的外觀,Presenter充當(dāng)模型和視圖之間的中間人。MVP中的View并不直接使用Model,它們之間的通信是通過Presenter(MVC中的Controller)來進(jìn)行的,所有的交互都發(fā)生在Presenter內(nèi)部,而在MVC中View會(huì)直接從Model中讀取數(shù)據(jù)而不是通過Controller。3zm28資訊網(wǎng)——每日最新資訊28at.com

在Android開發(fā)中,MVP模式克服了MVC模式的這些挑戰(zhàn),并且提供了一種簡(jiǎn)單的方法來構(gòu)造項(xiàng)目代碼。3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

3.MVVM

3zm28資訊網(wǎng)——每日最新資訊28at.com

MVVM是Model-View-ViewModel的簡(jiǎn)寫。其本質(zhì)是MVC的改進(jìn)模式。主要區(qū)別在于視圖和模型,視圖和模型保存了從模型轉(zhuǎn)換數(shù)據(jù)的代碼,并直接將數(shù)據(jù)變化發(fā)送到視圖,有助于保持每個(gè)模型直接與其各自的視圖交互,而不必?fù)?dān)心不同的模型影響到其它視圖。3zm28資訊網(wǎng)——每日最新資訊28at.com

MVVM模式有助于將應(yīng)用程序的業(yè)務(wù)和表示邏輯與用戶界面 (UI) 清晰分離。保持應(yīng)用程序邏輯和UI之間的清晰分離有助于解決許多開發(fā)問題,并使應(yīng)用程序更易于測(cè)試、維護(hù)和演變。它還可以顯著提高代碼重用率,并允許開發(fā)人員和UI設(shè)計(jì)人員在并行開發(fā)各自的應(yīng)用部分時(shí)能夠更輕松地進(jìn)行協(xié)作。3zm28資訊網(wǎng)——每日最新資訊28at.com

使用MVVM的框架如:MVVMLight、Cinch、Prism、Caliburn、MVVM Helpers、MVVMFoundation。3zm28資訊網(wǎng)——每日最新資訊28at.com

4.HMVC

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

HMVC(全稱Hierarchical-Model-View-Controller),也可以叫做 Layered MVC。顧名思義,就是按等級(jí)劃分的 MVC 模式,簡(jiǎn)單的解釋就是把MVC又細(xì)分成了多個(gè)子 MVC,每個(gè)模塊就分成一個(gè) MVC。3zm28資訊網(wǎng)——每日最新資訊28at.com

使用 HMVC 的好處就是可以降低各個(gè)功能模塊之間的耦合性,提高代碼復(fù)用性,使得每個(gè)功能都可以獨(dú)立出來,每個(gè)模塊都有自己的 MVC 結(jié)構(gòu),這就有點(diǎn)像ActiveX控件,每個(gè)控件都有自己的行為,控件之間互不影響。這種架構(gòu)風(fēng)格的將應(yīng)用程序調(diào)整為更小、更易于管理、可以獨(dú)立運(yùn)行的模塊。由于在創(chuàng)建新模塊時(shí)控制器能夠相互調(diào)用,因此要在應(yīng)用程序中進(jìn)行功能擴(kuò)展更加容易。3zm28資訊網(wǎng)——每日最新資訊28at.com

許多PHP框架是基于HMVC,例如:FuelPHP、PHPPixie、ClanCats。3zm28資訊網(wǎng)——每日最新資訊28at.com

5.MVA

3zm28資訊網(wǎng)——每日最新資訊28at.com

MVA(全稱:Model View Adapter),MVA和MVC都試圖解決同樣的問題,但MVA與MVC有一個(gè)區(qū)別:MVC的模型、視圖和控制器的關(guān)系形成一個(gè)三角形,模型、視圖和控制器作為頂點(diǎn),一些信息可以在模型和視圖之間流動(dòng),而不受控制器的直接控制;而MVA使用適配器(Adapter)代替控制器,MVA通過線性地安排模型、適配器或中介控制器和視圖,而沒有模型和視圖之間的任何直接連接,在這種架構(gòu)中,模型和視圖不知道彼此的存在。在單個(gè)模型和視圖之間,可以有許多適配器,它們修改來自模型的信息在視圖中的呈現(xiàn)方式。3zm28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)我們需要將數(shù)據(jù)與GUI分離時(shí),MVA就很有參考價(jià)值。在一些移動(dòng)應(yīng)用開發(fā)的框架中經(jīng)常被使用。3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

6.MVI

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

MVI與MVP和MVVM相比,它的設(shè)計(jì)模式考慮到了反應(yīng)式編程。MVI模式的數(shù)據(jù)流是單向的,從Model到View。View不能直接修改狀態(tài),而是通過發(fā)送Intent到Model來更新狀態(tài)并將其發(fā)送回View。3zm28資訊網(wǎng)——每日最新資訊28at.com

MVI架構(gòu)模式包括三個(gè)主要組件:Model(模型)、View(視圖)和Intent(意圖)。3zm28資訊網(wǎng)——每日最新資訊28at.com

  • Model表示應(yīng)用程序的狀態(tài),是一個(gè)不可變的數(shù)據(jù)結(jié)構(gòu),保存了渲染UI所需的所有信息;
  • View負(fù)責(zé)渲染UI,從Model接收到狀態(tài)信息并更新UI;
  • Intent表示用戶執(zhí)行操作的意圖,用以觸發(fā)改變Model中的狀態(tài);

3zm28資訊網(wǎng)——每日最新資訊28at.com

7.VIPER

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

3zm28資訊網(wǎng)——每日最新資訊28at.com

VIPER(全稱:View-Interactor-Presenter-Entity-Router) 即:視圖、交互器、演示器、實(shí)體、路由器。VIPER是由Uber的iOS開發(fā)團(tuán)隊(duì)提出的一種適用于iOS應(yīng)用程序的設(shè)計(jì)模式。VIPER架構(gòu)的目的是將應(yīng)用程序分解為不同的模塊,使得應(yīng)用程序更容易維護(hù)和擴(kuò)展,并且各個(gè)模塊之間相互獨(dú)立,減少了耦合性。3zm28資訊網(wǎng)——每日最新資訊28at.com

VIPER架構(gòu)模式包含以下五個(gè)模塊:3zm28資訊網(wǎng)——每日最新資訊28at.com

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

VIPER架構(gòu)的優(yōu)點(diǎn)是明確的職責(zé)分離和解耦,每個(gè)模塊都有明確的職責(zé)和接口,方便團(tuán)隊(duì)合作開發(fā)和維護(hù)。它還可以提高應(yīng)用程序的可測(cè)試性,每個(gè)模塊都可以進(jìn)行單元測(cè)試,減少了代碼的出錯(cuò)率。3zm28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-14625-0.html軟件設(shè)計(jì)模式之MVC、MVP、MVVM、HMVC、MVA、MVI和VIPER

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 接口響應(yīng)慢該如何排查

下一篇: OpenJDK JMH——Java程序的基準(zhǔn)測(cè)試工具

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 天貓精靈Sound Pro體驗(yàn):智能音箱沒有音質(zhì)?來聽聽我的

    這幾年除了手機(jī)作為智能生活終端最主要的核心之外,第二個(gè)可以成為中心點(diǎn)的產(chǎn)品是什么?——是智能音箱。 手機(jī)在執(zhí)行命令的時(shí)候有兩種操作方式,手和智能語音助手,而智能音箱只
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實(shí)現(xiàn)了一個(gè)流處理程序
  • Java NIO內(nèi)存映射文件:提高文件讀寫效率的優(yōu)秀實(shí)踐!

    Java的NIO庫提供了內(nèi)存映射文件的支持,它可以將文件映射到內(nèi)存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對(duì)Java內(nèi)存映射文件進(jìn)行詳細(xì)的介紹和演示。內(nèi)存映射文件概述內(nèi)存
  • 企業(yè)采用CRM系統(tǒng)的11個(gè)好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動(dòng),以改善客戶體驗(yàn)和滿意度。  CRM軟件市場(chǎng)規(guī)模如今超過580
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實(shí)戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們?cè)诓樵兊耐瑫r(shí)對(duì)搜索結(jié)果進(jìn)行自定義評(píng)分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進(jìn)行設(shè)置。近期
  • 為什么你不應(yīng)該使用Div作為可點(diǎn)擊元素

    按鈕是為任何網(wǎng)絡(luò)應(yīng)用程序提供交互性的最常見方式。但我們經(jīng)常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯(cuò)過了許多內(nèi)置瀏覽器的功能。
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼‍‍‍‍‍‍‍‍‍‍東方甄選創(chuàng)始人俞敏洪帶隊(duì)的“7天甘肅行”直播活動(dòng)已在近日順利收官。成立后一
  • OPPO K11采用全方位護(hù)眼屏:三大護(hù)眼能力減輕視覺疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發(fā)布,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣點(diǎn)就是將配備索尼IMX890主攝,堪稱是2000檔位影像表
Top 主站蜘蛛池模板: 大田县| 仁寿县| 静安区| 南开区| 永修县| 鹤壁市| 华亭县| 凭祥市| 宁都县| 福泉市| 来宾市| 巴彦县| 屏山县| 浑源县| 会理县| 黄大仙区| 康保县| 海阳市| 铜鼓县| 林州市| 抚远县| 宿州市| 嘉定区| 高平市| 三原县| 务川| 玉田县| 博乐市| 巴塘县| 邓州市| 黄骅市| 乌审旗| 申扎县| 平邑县| 辽阳县| 深圳市| 齐齐哈尔市| 四子王旗| 施甸县| 前郭尔| 江阴市|