首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MVVM - 使用简单模型作为自己的视图模型是一种不好的做法?

MVVM

MVVM 模式是一种软件架构模式,它使用 Model-View-ViewModel(MVVM)来将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。这种模式有助于提高应用程序的可维护性、可测试性和可扩展性。

使用简单模型作为自己的视图模型是一种不好的做法?

  • 不是一种不好的做法:使用简单模型作为视图模型可能不是最佳选择,具体取决于应用程序的复杂性和实际需求。以下是一些使用简单模型作为视图模型的优劣:

优点

  1. 简单性:使用简单模型使得应用程序更易于设计和实现。
  2. 减少复杂性:将业务逻辑和表示逻辑与用户界面 (UI) 清晰分离,有助于提高应用程序的可维护性和可扩展性。
  3. 可测试性:使用简单模型使得单元测试变得更加容易,因为测试主要关注模型层,而无需关注视图层。

缺点

  1. 可扩展性:使用简单模型可能会限制应用程序的可扩展性,因为模型层可能无法轻松地适应不断变化的需求。
  2. 复杂性:在模型层中处理所有逻辑可能会导致应用程序变得复杂,难以理解和维护。
  3. 耦合:将模型与视图直接耦合可能会导致代码的脆弱性和不可测试性。

总之,使用简单模型作为视图模型并非一种不好的做法,关键在于根据应用程序的复杂性和实际需求来选择合适的模型。MVVM 模式是一种非常实用的架构模式,可以帮助开发人员构建可维护、可测试和可扩展的应用程序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Knockout.Js官网学习(简介)

前言 最近一段时间在网上经常看到关于Knockout.js文章,于是自己就到官网看了下,不过是英文的,自己果断搞不来,借用google翻译了一下。...MVP 里的M 其实和MVC里的M是一个,都是封装了核心数据、逻辑和功能的计算关系的模型,而V是视图(窗体),P就是封装了窗体中的所有操作、响应用户的输入输出、事件等,与MVC里的C差不多,区别是MVC...是系统级架构的,而MVP是用在某个特定页面上的,也就是说MVP的灵活性要远远大于MVC,实现起来也极为简单。   ...因此,IView作为公共视图接口约束(契约)的一层意思;View则能传达解耦的一层意思。...MVVM的优点 MVVM已在微软WPF/Silverlight/WP7中广泛应用,和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。

2.3K20

关于 MVVM和MVC的这些,你知道吗?

MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...视图模型可以实现中介者模式,组织对视图所支持的用例集(Model)的后端逻辑的访问。 ^2 MVVM 的发展历程 MVVM是马丁·福勒的PM(Presentation Model)设计模式的变体。...这时侯MVVM出现了…(这里是自己猜的,没找到相关资料) MVVM框架便是前后端分离框架发展史上的一次思想的完全变革。...)和过滤器(Filters) MVVM原理:[^7] 实现数据绑定的做法有大致如下几种: 脏值检查(angular.js): angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图...设计模式角度考虑 :MVC是基于观察者设计模式的,Model作为一个主题,View作为观察者,当一个Model变化时,会通知更新一个或多个依赖的View,反之; MVVM可以看做是基于中介者设计模式和观察者设计模式

79500
  • 关于 MVVM和MVC的一些总结

    我需要解决的问题: MVVM到底是个什么东东,和前后端有没有关系,它和MVC区别是啥,有啥优势。 我是这样做的: 百度寻找,找了一些关于MVVM论文,博客,梳理出自己的答案。...MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。...视图模型可以实现中介者模式,组织对视图所支持的用例集(Model)的后端逻辑的访问。 MVVM 的发展历程 MVVM是马丁·福勒的PM(Presentation Model)设计模式的变体。...这时侯MVVM出现了…(这里是自己猜的,没找到相关资料) MVVM框架便是前后端分离框架发展史上的一次思想的完全变革。...设计模式角度考虑 :MVC是基于观察者设计模式的,Model作为一个主题,View作为观察者,当一个Model变化时,会通知更新一个或多个依赖的View,反之; MVVM可以看做是基于中介者设计模式和观察者设计模式

    2.7K30

    使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类就这么简单!

    并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。...ML.NET框架介绍 ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需具备开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。...该框架提供从文件和数据加载的数据。数据库,支持数据转换,并包含许多机器学习算法。 AI和机器学习有什么区别? AI 是一个计算分支,涉及训练计算机执行通常需要人类智能的操作。...机器学习是 AI 的一部分,它涉及计算机从数据中学习和在数据中发现模式,以便能够自行对新数据进行预测。...框架源代码 ML.NET官方提供的使用示例 https://github.com/dotnet/machinelearning-samples ML.NET使用环境安装 安装本机.NET环境 首先需要准备好本机的

    28610

    引入Jetpack架构后,你的App会发生哪些变化?

    ,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...经常听一些小伙伴提DataBinding不好用,原因是要在xml中写业务逻辑不好调试,对于这个观点我是持否定态度的。...关于这个问题我在上篇文章Data Mapper章节中描述的很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml中编写业务逻辑的问题...什么是MVVM MVVM其实是前端领域一个专注于界面开发的架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...MVVM就这么些东西,千万不要把它理解的特别复杂 其实我上篇文章也简单说过,好的架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦。

    1K31

    唯一可行的 iOS 架构

    他们还倾向于处理我们想脱离模型的模型逻辑以及我们想脱离视图的业务逻辑。这导致我们遇到的第一个问题是 Massive View Controller。...社区也因此分裂为喜欢 MVVM 的人和不喜欢 MVVM 的人。 MVP 解决此问题的另一种尝试是 MVP。...好了,在这种情况下,我们将根据 MVC 原理将表示和业务逻辑混合在一个不好的类中。很难理解为什么有此代码。我们看不到该代码是针对哪个具体视图编写的。最后,很难在不同的屏幕上重用此模型。...它只是 Presentation 层中的模型。使用 PresentationModel 并不意味着我们使用另一种架构。我们仍然使用 MVC,因为我们不会更改与用户交互的方式。...通常,PresentationModel 只是一种模式。是的,与 MVC 或原始 MVVM 不同,Presentation Model 是一种在确实需要时使用的模式。

    1.3K20

    MVVM与MVC在项目开发中的应用对比

    MVC模式详解MVC的结构组成MVC模式是一种经典的软件架构模式,其核心思想是将应用程序的数据模型、用户界面和用户输入逻辑分离开来,从而实现模块化和松耦合。...MVVM模式详解MVVM的核心理念MVVM模式是对MVC模式的一种改进,它进一步将视图的状态和行为抽象化,通过ViewModel来管理视图的数据和逻辑。...ViewModel(视图模型):视图模型是MVVM模式的核心,它充当视图和模型之间的桥梁。视图模型负责处理视图的逻辑和状态,并将模型的数据转换为视图可以显示的格式。...代码示例以下是一个简单的Vue.js组件示例,展示了如何使用MVVM模式实现商品列表的分页功能: MVVM作为两种广泛应用的架构模式,各自具有独特的优势和适用场景。

    9000

    一篇可能会让你爱上MVVM与ReactiveCocoa的文章

    本文最大的意义在于,提供了一种读者可以复现的方式,逐步引出从MVC向MVVM尽可能平滑过渡的一种方案;此外,也是为数不多的ReactiveCocoa实例文章之一.本文是MVVM系列文文章的第二篇,在阅读之前...为View写的数据模型: Model --> Model + ViewModel 我的观点是,尽量不要使用系统自带的数据类型,比如数组,字典等作为Model,要尽可能地使用自定义地类.使用自定义的类,方便后期维护...使用ViewModel作为模块入口: M + C --> VM + C 就像我开篇序言中提到的那样,MVVM系列的文章,不单单是关于MVVM的讨论,更是关于如何将已有MVC项目逐步过渡为MVVM架构的可行性以及方法步骤的探究....这里我采用的是一种折中的更具可行性的方案: 我对外暴露的接口是ViewModel,但是对应的会给这个ViewModel提供一个使用Model作为参数的便利初始化方法;控制器或模块内部,就直接使用传入的...必须指出的一点是: ViewModel是为View服务的,它的命名和字段定义应该根据View的需要来进行.本例是一个非常简单的场景.在复杂的场景中,一个model可能对应多个viewModel,此时多个视图可能都是同一种数据的不同展示方式

    1.3K60

    MVC、MVP、MVVM 架构的特点与区别

    MVC补充 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。...概念 MVC(Model–View–Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。...模型与视图完全分离,我们可以修改视图而不影响模型。 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部。...ViewModel: 比起MVP中View需要自己提供API,MVVM在VM中构建一组状态数据(state data),作为View状态的抽象。...有的,当UI比较简单的时候,使用VM就会使业务逻辑变得复杂,有过分设计的嫌疑。所以VM只适合复杂UI交互的项目。

    87910

    引入Jetpack架构后,你的App会发生哪些变化?

    相提并论,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...经常听一些小伙伴提DataBinding不好用,原因是要在xml中写业务逻辑不好调试,对于这个观点我是持否定态度的。...关于这个问题我在上篇文章Data Mapper章节中描述的很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml中编写业务逻辑的问题...5.1 什么是MVVM MVVM其实是前端领域一个专注于界面开发的架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...不管是双向绑定还是单向驱动,只要能保证数据、UI一致,那它就符合MVVM思想 其实我上篇文章也简单说过,好的架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦

    1.9K80

    MVC、MVP、MVVM 架构的特点与区别

    MVC补充 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。...概念 MVC(Model–View–Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。...模型与视图完全分离,我们可以修改视图而不影响模型。 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部。...ViewModel: 比起MVP中View需要自己提供API,MVVM在VM中构建一组状态数据(state data),作为View状态的抽象。...有的,当UI比较简单的时候,使用VM就会使业务逻辑变得复杂,有过分设计的嫌疑。所以VM只适合复杂UI交互的项目。

    63910

    深度解析 Vue MVVM 原理实现

    什么是MVVM?...MVVM其实表示的是 Model-View-ViewModel Model:模型层,负责处理业务逻辑以及和服务器端进行交互 View:视图层:负责将数据模型转化为UI展示出来,可以简单的理解为HTML页面...ViewModel:视图模型层,用来连接Model和View,是Model和View之间的通信桥梁 在MVVM的架构下,View层和Model层并没有直接联系,而是通过ViewModel层进行交互。...Vue 与 MVVM 其实,Vue 框架就是一个典型的 MVVM 模型的框架。 Vue 框架其实就是起到 MVVM 模式中的 ViewModel 层的作用。...HTML 代码和负责业务逻辑的 JS 代码耦合到一起,这是个很严重的问题 如果我们直接操作DOM元素,会造成性能低下等一系列问题 如果使用Vue的话,可以将视图层和模型层有效地分离开来 <template

    1.5K20

    “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    是作为复合属性来绑定的,对于标签控件和列表框控件,也是类似的过程,如下图: ?...创建MVVM的模型 我们的模型很简单,就是负责创建新用户,加载已有用户,添加,修改或者删除用户,并且这些操作都是针对数据库的,也就是我们通常的CRUD操作。...,却可以直接提供给视图作为模型绑定的元素,因为SOD实体类都实现了“属性修改通知”接口,前面已经详细说明。...创建MVVM的视图模型 视图模型是对视图的一个抽象,它封装了主要的视图处理逻辑,与MVP的Presenter不同,视图模型并不会包含详细视图元素的抽象,比如一个抽象的列表控件,而是对视图可能用到的数据进行封装...运行解决方案 经过上面的过程,我们添加了视图元素,设置好了视图元素的数据绑定,创建了模型和视图模型对象,一个简单的MVVM示例程序就好了,下面是运行效果图: ?

    3.8K60

    MVVM+数据绑定,让你的Android应用飞起来,MVVM+数据绑定技巧,打造Android应用的数据流水线!

    在该模式中,视图(View)负责展示用户界面,模型(Model)管理数据和业务逻辑,而视图模型(ViewModel)则作为两者的中介,实现了数据的转换和逻辑的处理。...ViewModel(视图模型) 定义:ViewModel层连接Model和View,作为它们之间的桥梁。它负责从Model中获取数据,并将数据转换为View层可以直接使用的形式。...一、MVVM与MVC的对比 MVC(Model-View-Controller)是一种经典的软件架构模式,它将应用程序划分为三个基本部分:模型(Model)、视图(View)和控制器(Controller...ViewModel作为数据同步的中转站 作用: ViewModel是MVVM模式中的核心组件之一,它充当了Model(数据模型)与View(视图)之间的桥梁。...通过不断学习和实践,不断提升自己在MVVM模式应用方面的能力和水平。 这些最佳实践经验是在实际开发中逐步积累和总结出来的宝贵财富。

    13310

    Vue系列(一)——初识Vue.js

    官方的说法就是是一套用于构建用户界面的渐进式框架,只关注视图层, 采用自底向上增量开发的设计,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。...感觉不太容易理解,我觉得翻译一下呢就是,用来写页面的一种框架,这种框架有这很简单的API能够帮助用户快速开发,然后使用MVVM的模式,使逻辑、视图分离的这么一个框架。...要说这框架好不好学,兔妞觉得,框架被编出来就是帮助开发者开发的,要是比原生的JavaScript还恶心,谁还用它了,你说是不是,所以定是较原生简单的。...这个图就是一个MVVM的模型,View指的就是视图层,主要用于表现DOM节点;Model就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model;ViewModel就是与界面...中绑定的回调 4)new MVVM是数据绑定的入口,整合Observer、Compile、Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用

    48610

    系统分析师案例必备知识点汇总---2023系列文章二

    四、系统架构设计 1、面向服务的架构 SOA SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元 (服务) 模型的方法。...UDDI 统一描述、发现和集成,提供了一种服务发布、查找和定位的方法,是服务的信 息注册规范, 以便被需要该服务的用户发现和使用它。 WSDL Web 服务描述语言是对服务进行描述的语言。...REST 表述性状态转移是一种只使用HTTP 和 XML 进行基于 Web 通信的技术,可以降低 开发的复杂性,提高系统的可伸缩性。...控制器和视图可以随着模型的扩展而进行相应的扩展,只要保持一种公共 的接口,控制器和视图的旧版本也可以继续使用。 (3) 功能强大的用户界面。...模型与视图完全分离,可以修改视图而不影响模型。 (2) 可以更高效地使用模型,因为所有的交互都发生在一个地方—Presenter 内部。 (3) 复用性好。

    41720

    软考高级架构师:MVC 架构MVP 架构 MVVM 架构区别

    - 模型(Model)- 视图(View)- 表示器(Presenter) MVVM(Model-View-ViewModel) MVVM 引入了 ViewModel 的概念,ViewModel 作为...视图模型(ViewModel):它是视图的抽象,负责处理视图的逻辑和数据。它使得模型中的数据更易于管理和使用。...总的来说,MVC、MVP和MVVM都是帮助开发者以一种更组织化的方式开发应用程序,它们之间的区别主要在于处理用户界面逻辑和后端数据逻辑的方式上。...视图(View) C. 控制器(Controller) D. 表示器(Presenter) 在 MVP 架构模式中,哪个部分是作为视图(View)和模型(Model)之间的中介? A....在 MVP 模式中,表示器(Presenter)的主要职责是处理业务逻辑,并根据逻辑处理的结果更新视图,它作为视图和模型之间的桥梁。 答案为 A。

    26300

    引入Jetpack架构后,你的App会发生哪些变化?

    相提并论,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...经常听一些小伙伴提DataBinding不好用,原因是要在xml中写业务逻辑不好调试,对于这个观点我是持否定态度的。...关于这个问题我在上篇文章Data Mapper章节中描述的很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml中编写业务逻辑的问题...5.1 什么是MVVM MVVM其实是前端领域一个专注于界面开发的架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...不管是双向绑定还是单向驱动,只要能保证数据、UI一致,那它就符合MVVM思想 其实我上篇文章也简单说过,好的架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦

    84300

    你知道MVC,MVP和MVVM之间的故事吗?

    MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码...因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。...作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter...MVVM 因为WPF技术出现,从而使MVP设计模式有所改进,MVVM 模式便是使用的是数据绑定基础架构。它们可以轻松构建UI的必要元素。MVVM代表的是Model-View-ViewModel。...MVVM优点: MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。

    65130
    领券