国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【軟件架構(gòu)模式——MVC、MVP、MVVM】

這篇具有很好參考價值的文章主要介紹了【軟件架構(gòu)模式——MVC、MVP、MVVM】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. MVC(Model-View-Controller)

概念介紹: MVC是一種軟件架構(gòu)模式,用于組織應(yīng)用程序的代碼和邏輯。它將應(yīng)用程序分為三個核心部分:模型(Model)、視圖(View)和控制器(Controller)。

  • **模型(Model)**負責處理應(yīng)用程序的數(shù)據(jù)邏輯和狀態(tài)。它表示應(yīng)用程序的數(shù)據(jù)源,并封裝了與數(shù)據(jù)相關(guān)的操作和業(yè)務(wù)邏輯。
  • **視圖(View)**負責向用戶展示數(shù)據(jù)并接收用戶的輸入。它是用戶界面的可視化呈現(xiàn),可以是頁面、窗口或其他用戶交互形式。
  • **控制器(Controller)**充當模型和視圖之間的協(xié)調(diào)者。它接收用戶的輸入,更新模型的數(shù)據(jù),然后將更新后的數(shù)據(jù)反映到視圖上。

舉例說明: 以一個簡單的登錄頁面為例,實現(xiàn)MVC架構(gòu)的方式如下:

  1. 模型(Model):定義一個User類,包含用戶名和密碼等屬性,并提供相應(yīng)的方法來驗證用戶的登錄信息。
class User {
  constructor(username, password) {
    this.username = username;
    this.password = password;
  }

  isValid() {
    // 驗證用戶名和密碼是否正確
    // 返回 true 或 false
  }
}
  1. 視圖(View):創(chuàng)建一個HTML表單,包含用戶名和密碼的輸入框以及登錄按鈕。
<form>
  <input type="text" id="username">
  <input type="password" id="password">
  <button id="loginButton">登錄</button>
</form>
  1. 控制器(Controller):在JavaScript中,監(jiān)聽登錄按鈕的點擊事件,并根據(jù)用戶輸入的值創(chuàng)建一個User對象,并調(diào)用User對象的驗證方法。
document.getElementById('loginButton').addEventListener('click', function() {
  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;

  var user = new User(username, password);

  if (user.isValid()) {
    // 登錄成功,進行相關(guān)操作
  } else {
    // 登錄失敗,顯示錯誤信息
  }
});

通過以上示例,可以看到模型負責處理數(shù)據(jù)邏輯,視圖負責展示界面,控制器協(xié)調(diào)兩者之間的交互,實現(xiàn)了關(guān)注點分離、代碼復用和可維護性。

2. MVP(Model-View-Presenter)

概念介紹: MVP是一種軟件架構(gòu)模式,是MVC模式的一個變體,旨在更好地分離視圖(View)和模型(Model)并引入一個介于它們之間的主持人(Presenter)。

  • **模型(Model)**與MVC模式中的模型類似,負責處理應(yīng)用程序的數(shù)據(jù)邏輯和狀態(tài)。
  • **視圖(View)**是用戶界面的可視化呈現(xiàn),負責向用戶展示數(shù)據(jù)并接收用戶的輸入。
  • **主持人(Presenter)**是視圖和模型之間的橋梁。它接收用戶的輸入,并根據(jù)需要更新模型的數(shù)據(jù)。它還監(jiān)聽模型的變化,將變化的數(shù)據(jù)更新到視圖上。

舉例說明: 以一個待辦事項列表應(yīng)用為例,實現(xiàn)MVP架構(gòu)的方式如下:

  1. 模型(Model):定義一個TodoList類,包含存儲待辦事項的數(shù)組,并提供添加、刪除和更新等操作。
class TodoList {
  constructor() {
    this.todos = [];
  }

  add(todo) {
    // 添加待辦事項
  }

  remove(todo) {
    // 刪除待辦事項
  }

  update(todo) {
    // 更新待辦事項
  }
}
  1. 視圖(View):創(chuàng)建一個界面,展示待辦事項列表,并提供添加、刪除和更新等操作的用戶界面。
<div>
  <ul id="todoList">
    <!-- 待辦事項列表 -->
  </ul>

  <input type="text" id="todoInput">
  <button id="addButton">添加</button>
</div>
  1. 主持人(Presenter):在JavaScript中,監(jiān)聽視圖的事件,例如點擊添加按鈕、選擇列表項等,并根據(jù)用戶的操作更新模型的數(shù)據(jù)或刷新視圖。
class TodoPresenter {
  constructor(model, view) {
    this.model = model;
    this.view = view;

    // 監(jiān)聽視圖的事件
    this.view.on('add', this.addTodo.bind(this));
    this.view.on('remove', this.removeTodo.bind(this));
    this.view.on('update', this.updateTodo.bind(this));

    // 初始化視圖和模型
    this.view.render();
  }

  addTodo() {
    // 處理添加待辦事項的邏輯,更新模型并刷新視圖
  }

  removeTodo() {
    // 處理刪除待辦事項的邏輯,更新模型并刷新視圖
  }

  updateTodo() {
    // 處理更新待辦事項的邏輯,更新模型并刷新視圖
  }
}

通過以上示例,主持人充當了模型和視圖之間的協(xié)調(diào)者,將用戶界面的操作轉(zhuǎn)化為對模型的操作,并及時更新視圖。

3. MVVM(Model-View-ViewModel)

概念介紹: MVVM是一種軟件架構(gòu)模式,旨在進一步解耦視圖(View)和模型(Model)并引入一個獨立于視圖的視圖模型(ViewModel)。

  • **模型(Model)**與MVC和MVP模式中的模型類似,負責處理應(yīng)用程序的數(shù)據(jù)邏輯和狀態(tài)。
  • **視圖(View)**是用戶界面的可視化呈現(xiàn),負責向用戶展示數(shù)據(jù)并接收用戶的輸入。
  • **視圖模型(ViewModel)**是視圖的抽象表示,它包含了與視圖相關(guān)的業(yè)務(wù)邏輯和狀態(tài)。它將視圖需要展示的數(shù)據(jù)從模型中獲取并進行適配和轉(zhuǎn)換,供視圖使用。

舉例說明: 以一個商品列表應(yīng)用為例,實現(xiàn)MVVM架構(gòu)的方式如下:

  1. 模型(Model):定義一個Product類,包含商品的名稱、價格等屬性,并提供相應(yīng)的方法來獲取和操作商品數(shù)據(jù)。
class Product {
  constructor(name, price) {
    this.name = name;
    this.price = price;
  }

  // 獲取商品數(shù)據(jù)的方法
}
  1. 視圖(View):創(chuàng)建一個HTML頁面,并使用綁定語法將視圖的元素與視圖模型關(guān)聯(lián)起來。
<div>
  <ul>
    <li v-for="product in products">{{ product.name }} - {{ product.price }}</li>
  </ul>
</div>
  1. 視圖模型(ViewModel):使用框架或庫提供的功能,將視圖模型綁定到視圖上,并提供適配和轉(zhuǎn)換數(shù)據(jù)的方法。
var viewModel = {
  products: [] // 商品數(shù)據(jù)
};

// 將視圖模型綁定到視圖上
bind(viewModel, document.getElementById('app'));

// 適配和轉(zhuǎn)換數(shù)據(jù)的方法
// 可以從模型獲取數(shù)據(jù),并進行必要的處理

通過以上示例,視圖模型負責管理視圖所需的數(shù)據(jù),并將數(shù)據(jù)從模型中獲取后進行適配和轉(zhuǎn)換,然后傳遞給視圖進行展示。視圖的變化會反映到視圖模型上,從而實現(xiàn)雙向數(shù)據(jù)綁定。文章來源地址http://www.zghlxwxcb.cn/news/detail-502427.html

到了這里,關(guān)于【軟件架構(gòu)模式——MVC、MVP、MVVM】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【面試題】MVC、MVP與MVVM模式是什么?

    【面試題】MVC、MVP與MVVM模式是什么?

    ?MVC模式 MVC是應(yīng)用最廣泛的軟件架構(gòu)之一,一般 MVC 分為: Model ( 模型 ) 、 Controller ( 控制器 ) 、 View ( 視圖 ) 。 這主要是基于分層的目的,讓彼此的職責分開。 View 一般通過 Controller 來和 Model 進行聯(lián)系。 Controller 是 Model 和 View 的協(xié)調(diào)者, View 和 Model 不直接聯(lián)系。基

    2024年02月11日
    瀏覽(26)
  • [架構(gòu)之路-195]-《軟考-系統(tǒng)分析師》- MVC、MVP、MVVM架構(gòu)各自的優(yōu)缺點

    [架構(gòu)之路-195]-《軟考-系統(tǒng)分析師》- MVC、MVP、MVVM架構(gòu)各自的優(yōu)缺點

    目錄 前言: 一、MVC 1.1 MVC的基本結(jié)構(gòu) 1.2 MVC的工作流程 1.3 MVC的優(yōu)缺點 二、MVP 2.1 MVP的基本結(jié)構(gòu) 2.2 MVP的工作流程 2.3 MVP的優(yōu)缺點 三、MVVM 3.1 MVVM的基本結(jié)構(gòu) 3.2 MVVM的工作流程 3.3 MVVM的優(yōu)缺點 MVC: 一個controller對應(yīng)多個view,model可以直接通過view。從大鍋燴時代進化,引入了分層

    2024年02月04日
    瀏覽(104)
  • 安卓基礎(chǔ)鞏固(四):設(shè)計原則、安卓主流技術(shù)框架MVC/MVP/MVVM、設(shè)計模式

    安卓基礎(chǔ)鞏固(四):設(shè)計原則、安卓主流技術(shù)框架MVC/MVP/MVVM、設(shè)計模式

    模塊化功能:使得程序模塊化,即內(nèi)部高聚合,模塊之間低耦合 提高開發(fā)效率:開發(fā)人員只需要專注于一點(視圖顯示、業(yè)務(wù)邏輯、數(shù)據(jù)處理) 提高測試效率:后期測試時可以迅速根據(jù)報錯反饋,定位到問題出現(xiàn)的位置。 六大設(shè)計原則是設(shè)計模式的理論,設(shè)計模式是設(shè)計原

    2024年02月06日
    瀏覽(129)
  • 淺談下mvc和mvp、mvvm到mvvm+Jetpack

    淺談下mvc和mvp、mvvm到mvvm+Jetpack

    作者:抓不住老鼠的貓 MVC MVC全名為Model-View-Controller,圖解如下 View:負責與用戶交匯,顯示界面。 Controller:負責接收來自view的請求,處理業(yè)務(wù)邏輯。 Model:負責數(shù)據(jù)邏輯,網(wǎng)絡(luò)請求數(shù)據(jù)以及本地數(shù)據(jù)庫操作數(shù)據(jù)等。 在MVC架構(gòu)中,Controller是業(yè)務(wù)的主要承載者,幾乎所有的業(yè)

    2024年02月16日
    瀏覽(26)
  • MVC,MVP,MVVM的理解和區(qū)別

    MVC,MVP,MVVM的理解和區(qū)別

    MVC MVC ,早期的開發(fā)架構(gòu),在安卓里,用res代表V,activity代表Controller層,Model層完成數(shù)據(jù)請求,更新操作,activity完成view的綁定,以及業(yè)務(wù)邏輯的編寫,更新view,這種模式是單向的,雖然代碼存在分層,但是之間的耦合性還是很高,并且C層做的事情很多,久而久之會變得臃腫

    2024年02月10日
    瀏覽(25)
  • Android面試題:MVC、MVP、MVVM

    MVC結(jié)構(gòu): 1.MVC(Model-View-Controller) 2.Model:對數(shù)據(jù)庫的操作、對網(wǎng)絡(luò)等的操作都應(yīng)該在Model里面處理,當然對業(yè)務(wù)計算,變更等操作也是必須放在的該層的。 3.View:主要包括一下View及ViewGroup控件,可以是系統(tǒng)控件也可以是自定義控件。4.Controller:Android的控制層通常在Activity、Fragmen

    2024年02月11日
    瀏覽(23)
  • 什么是 MVVM?MVVM和 MVC 有什么區(qū)別?什么又是 MVP ?

    什么是 MVVM?MVVM和 MVC 有什么區(qū)別?什么又是 MVP ?

    MVVM是 Model-View-ViewModel的縮寫,即模型-視圖-視圖模型。MVVM 是一種設(shè)計思想。 模型(Model):代表數(shù)據(jù)模型,也可以在Model中定義數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯。數(shù)據(jù)保存—存放著各種數(shù)據(jù),有的是固定寫死的,大多數(shù)是從后端返回的數(shù)據(jù) 視圖 (View):代表UI 組件,它負責將數(shù)

    2023年04月24日
    瀏覽(30)
  • 編程框架概述:MVC, MVP, MVVM, Flux/Redux, 和 Clean Architecture

    ? ? ? ? 在軟件開發(fā)中,選擇合適的編程框架和架構(gòu)模式對于構(gòu)建可維護和可擴展的應(yīng)用程序至關(guān)重要。初學者在面對多種架構(gòu)選項時可能會感到困惑。本文將詳細介紹五種流行的編程框架:MVC、MVP、MVVM、Flux/Redux和Clean Architecture。 MVC是一種將應(yīng)用程序分為三個核心組件的架

    2024年01月20日
    瀏覽(24)
  • MVC、MVP、MVVM的成本角度結(jié)合業(yè)務(wù),如何考慮選型?一文了解方方面面

    MVC、MVP、MVVM的成本角度結(jié)合業(yè)務(wù),如何考慮選型?一文了解方方面面

    大家都知道,使用架構(gòu)的目的是使程序模塊化,做到模塊內(nèi)部的高聚合和模塊之間的低耦合,使得程序在開發(fā)的過程中,開發(fā)人員只需要專注于一點,提高程序開發(fā)的效率。那么MVC、MVP、MVVM,該怎么選?在什么最省去開發(fā)時間和業(yè)務(wù)成本? 本篇來徹底理解MVC、MVP、MVVM這三個

    2024年02月10日
    瀏覽(20)
  • MVC與MVVM模式的區(qū)別

    MVC與MVVM模式的區(qū)別

    Model(模型):用于處理應(yīng)用程序數(shù)據(jù)邏輯,負責在數(shù)據(jù)庫中存取數(shù)據(jù)。處理數(shù)據(jù)的crud View(視圖):處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。 Controller(控制器):處理 數(shù)據(jù)顯示 的部分,控制器負責從視圖讀取數(shù)據(jù),控制用戶輸入,并將數(shù)據(jù)發(fā)送給模型。一

    2024年02月15日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包