【软件架构模式——MVC、MVP、MVVM】

这篇具有很好参考价值的文章主要介绍了【软件架构模式——MVC、MVP、MVVM】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. MVC(Model-View-Controller)

概念介绍: MVC是一种软件架构模式,用于组织应用程序的代码和逻辑。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。

  • **模型(Model)**负责处理应用程序的数据逻辑和状态。它表示应用程序的数据源,并封装了与数据相关的操作和业务逻辑。
  • **视图(View)**负责向用户展示数据并接收用户的输入。它是用户界面的可视化呈现,可以是页面、窗口或其他用户交互形式。
  • **控制器(Controller)**充当模型和视图之间的协调者。它接收用户的输入,更新模型的数据,然后将更新后的数据反映到视图上。

举例说明: 以一个简单的登录页面为例,实现MVC架构的方式如下:

  1. 模型(Model):定义一个User类,包含用户名和密码等属性,并提供相应的方法来验证用户的登录信息。
class User {
  constructor(username, password) {
    this.username = username;
    this.password = password;
  }

  isValid() {
    // 验证用户名和密码是否正确
    // 返回 true 或 false
  }
}
  1. 视图(View):创建一个HTML表单,包含用户名和密码的输入框以及登录按钮。
<form>
  <input type="text" id="username">
  <input type="password" id="password">
  <button id="loginButton">登录</button>
</form>
  1. 控制器(Controller):在JavaScript中,监听登录按钮的点击事件,并根据用户输入的值创建一个User对象,并调用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()) {
    // 登录成功,进行相关操作
  } else {
    // 登录失败,显示错误信息
  }
});

通过以上示例,可以看到模型负责处理数据逻辑,视图负责展示界面,控制器协调两者之间的交互,实现了关注点分离、代码复用和可维护性。

2. MVP(Model-View-Presenter)

概念介绍: MVP是一种软件架构模式,是MVC模式的一个变体,旨在更好地分离视图(View)和模型(Model)并引入一个介于它们之间的主持人(Presenter)。

  • **模型(Model)**与MVC模式中的模型类似,负责处理应用程序的数据逻辑和状态。
  • **视图(View)**是用户界面的可视化呈现,负责向用户展示数据并接收用户的输入。
  • **主持人(Presenter)**是视图和模型之间的桥梁。它接收用户的输入,并根据需要更新模型的数据。它还监听模型的变化,将变化的数据更新到视图上。

举例说明: 以一个待办事项列表应用为例,实现MVP架构的方式如下:

  1. 模型(Model):定义一个TodoList类,包含存储待办事项的数组,并提供添加、删除和更新等操作。
class TodoList {
  constructor() {
    this.todos = [];
  }

  add(todo) {
    // 添加待办事项
  }

  remove(todo) {
    // 删除待办事项
  }

  update(todo) {
    // 更新待办事项
  }
}
  1. 视图(View):创建一个界面,展示待办事项列表,并提供添加、删除和更新等操作的用户界面。
<div>
  <ul id="todoList">
    <!-- 待办事项列表 -->
  </ul>

  <input type="text" id="todoInput">
  <button id="addButton">添加</button>
</div>
  1. 主持人(Presenter):在JavaScript中,监听视图的事件,例如点击添加按钮、选择列表项等,并根据用户的操作更新模型的数据或刷新视图。
class TodoPresenter {
  constructor(model, view) {
    this.model = model;
    this.view = view;

    // 监听视图的事件
    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() {
    // 处理更新待办事项的逻辑,更新模型并刷新视图
  }
}

通过以上示例,主持人充当了模型和视图之间的协调者,将用户界面的操作转化为对模型的操作,并及时更新视图。

3. MVVM(Model-View-ViewModel)

概念介绍: MVVM是一种软件架构模式,旨在进一步解耦视图(View)和模型(Model)并引入一个独立于视图的视图模型(ViewModel)。

  • **模型(Model)**与MVC和MVP模式中的模型类似,负责处理应用程序的数据逻辑和状态。
  • **视图(View)**是用户界面的可视化呈现,负责向用户展示数据并接收用户的输入。
  • **视图模型(ViewModel)**是视图的抽象表示,它包含了与视图相关的业务逻辑和状态。它将视图需要展示的数据从模型中获取并进行适配和转换,供视图使用。

举例说明: 以一个商品列表应用为例,实现MVVM架构的方式如下:

  1. 模型(Model):定义一个Product类,包含商品的名称、价格等属性,并提供相应的方法来获取和操作商品数据。
class Product {
  constructor(name, price) {
    this.name = name;
    this.price = price;
  }

  // 获取商品数据的方法
}
  1. 视图(View):创建一个HTML页面,并使用绑定语法将视图的元素与视图模型关联起来。
<div>
  <ul>
    <li v-for="product in products">{{ product.name }} - {{ product.price }}</li>
  </ul>
</div>
  1. 视图模型(ViewModel):使用框架或库提供的功能,将视图模型绑定到视图上,并提供适配和转换数据的方法。
var viewModel = {
  products: [] // 商品数据
};

// 将视图模型绑定到视图上
bind(viewModel, document.getElementById('app'));

// 适配和转换数据的方法
// 可以从模型获取数据,并进行必要的处理

通过以上示例,视图模型负责管理视图所需的数据,并将数据从模型中获取后进行适配和转换,然后传递给视图进行展示。视图的变化会反映到视图模型上,从而实现双向数据绑定。文章来源地址https://www.toymoban.com/news/detail-502427.html

到了这里,关于【软件架构模式——MVC、MVP、MVVM】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【面试题】MVC、MVP与MVVM模式是什么?

     MVC模式 MVC是应用最广泛的软件架构之一,一般 MVC 分为: Model ( 模型 ) 、 Controller ( 控制器 ) 、 View ( 视图 ) 。 这主要是基于分层的目的,让彼此的职责分开。 View 一般通过 Controller 来和 Model 进行联系。 Controller 是 Model 和 View 的协调者, View 和 Model 不直接联系。基

    2024年02月11日
    浏览(37)
  • [架构之路-195]-《软考-系统分析师》- MVC、MVP、MVVM架构各自的优缺点

    目录 前言: 一、MVC 1.1 MVC的基本结构 1.2 MVC的工作流程 1.3 MVC的优缺点 二、MVP 2.1 MVP的基本结构 2.2 MVP的工作流程 2.3 MVP的优缺点 三、MVVM 3.1 MVVM的基本结构 3.2 MVVM的工作流程 3.3 MVVM的优缺点 MVC: 一个controller对应多个view,model可以直接通过view。从大锅烩时代进化,引入了分层

    2024年02月04日
    浏览(85)
  • 安卓基础巩固(四):设计原则、安卓主流技术框架MVC/MVP/MVVM、设计模式

    模块化功能:使得程序模块化,即内部高聚合,模块之间低耦合 提高开发效率:开发人员只需要专注于一点(视图显示、业务逻辑、数据处理) 提高测试效率:后期测试时可以迅速根据报错反馈,定位到问题出现的位置。 六大设计原则是设计模式的理论,设计模式是设计原

    2024年02月06日
    浏览(54)
  • 浅谈下mvc和mvp、mvvm到mvvm+Jetpack

    作者:抓不住老鼠的猫 MVC MVC全名为Model-View-Controller,图解如下 View:负责与用户交汇,显示界面。 Controller:负责接收来自view的请求,处理业务逻辑。 Model:负责数据逻辑,网络请求数据以及本地数据库操作数据等。 在MVC架构中,Controller是业务的主要承载者,几乎所有的业

    2024年02月16日
    浏览(40)
  • Android面试题:MVC、MVP、MVVM

    MVC结构: 1.MVC(Model-View-Controller) 2.Model:对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算,变更等操作也是必须放在的该层的。 3.View:主要包括一下View及ViewGroup控件,可以是系统控件也可以是自定义控件。4.Controller:Android的控制层通常在Activity、Fragmen

    2024年02月11日
    浏览(42)
  • MVC,MVP,MVVM的理解和区别

    MVC MVC ,早期的开发架构,在安卓里,用res代表V,activity代表Controller层,Model层完成数据请求,更新操作,activity完成view的绑定,以及业务逻辑的编写,更新view,这种模式是单向的,虽然代码存在分层,但是之间的耦合性还是很高,并且C层做的事情很多,久而久之会变得臃肿

    2024年02月10日
    浏览(38)
  • 什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

    MVVM是 Model-View-ViewModel的缩写,即模型-视图-视图模型。MVVM 是一种设计思想。 模型(Model):代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。数据保存—存放着各种数据,有的是固定写死的,大多数是从后端返回的数据 视图 (View):代表UI 组件,它负责将数

    2023年04月24日
    浏览(47)
  • 编程框架概述:MVC, MVP, MVVM, Flux/Redux, 和 Clean Architecture

            在软件开发中,选择合适的编程框架和架构模式对于构建可维护和可扩展的应用程序至关重要。初学者在面对多种架构选项时可能会感到困惑。本文将详细介绍五种流行的编程框架:MVC、MVP、MVVM、Flux/Redux和Clean Architecture。 MVC是一种将应用程序分为三个核心组件的架

    2024年01月20日
    浏览(55)
  • MVC、MVP、MVVM的成本角度结合业务,如何考虑选型?一文了解方方面面

    大家都知道,使用架构的目的是使程序模块化,做到模块内部的高聚合和模块之间的低耦合,使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率。那么MVC、MVP、MVVM,该怎么选?在什么最省去开发时间和业务成本? 本篇来彻底理解MVC、MVP、MVVM这三个

    2024年02月10日
    浏览(36)
  • MVC与MVVM模式的区别

    Model(模型):用于处理应用程序数据逻辑,负责在数据库中存取数据。处理数据的crud View(视图):处理数据显示的部分。通常视图是依据模型数据创建的。 Controller(控制器):处理 数据显示 的部分,控制器负责从视图读取数据,控制用户输入,并将数据发送给模型。一

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包