首页
学习
活动
专区
工具
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可以看做基于中介者设计模式和观察者设计模式

77400

关于 MVVM和MVC一些总结

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

2.6K30

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

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

1K31

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交互项目。

32610

唯一可行 iOS 架构

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

1.2K20

一篇可能会让你爱上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交互项目。

42810

深度解析 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.4K20

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

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

3.7K60

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

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

1.9K80

软考高级架构师: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。

5700

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

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

37320

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

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

45810

你知道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. 低耦合。

61230

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

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

82200

Android应用架构未来:深入理解MVI模式及其优势

在MVI中,模型不可变数据结构,它包含了应用程序所有状态信息。当视图接收到新状态时,它会重新渲染以反映最新状态。这种不可变性使得状态管理更加简单和可靠,因为状态不会被意外地修改或篡改。...View View用户界面的展示层。它负责将模型状态呈现给用户,并且接收用户输入事件。在MVI中,视图无状态,它仅仅是一个渲染器,负责根据模型状态来更新界面。...当视图接收到意图时,它会将意图发送给处理程序来更新模型状态。 原理 MVI 架构模式核心原理单向数据流,它保证了应用状态可预测性和一致性。...具体流程如下: 用户与视图进行交互,产生意图(Intent)。 意图被发送到模型层。 模型根据收到意图更新状态,并将新状态发送回视图视图根据新状态更新界面。...这种单向数据流确保了数据一致性,同时也使得应用状态变化更加可控。 使用示例 下面我们通过一个简单登录页面来演示如何使用MVI架构模式。

48310

高级前端开发者必会34道Vue面试题系列(一)

提到MVVM,很多前端开发者都会想到Vue双向绑定,然而它们并不能划等号,MVVM一种软件架构模式,而Vue只是一种在前端层面上实现,其实不单在Vue里,在很多Web 框架应用里都有相关实现。...MVVM模式到底是什么呢?要说到MVVM这种模式,则必须要提及另一种大多数开发者都能耳熟能详模式,就是MVC模式。 什么MVC?...先看看下面这张经典MVC模型图,Model(模型)、View(视图)、 Controller(控制器)相互依赖关系三部分组成模型。 ? 认识一下这三部分具体指什么。...View View视图将数据内容呈现给用户肉眼界面层,View层最终会将数据模型信息,渲染显示成人类能易于识别感知部分。...随着前端对于控制逻辑越来越轻量,MVVM模式作为MVC模式一种补充出现了,万变不离其宗,最终目的都是将Model里数据展示在View视图上,而MVVM相比于MVC则将前端开发者所要控制逻辑做到更加符合轻量级要求

1.6K20

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

缺点:会议组织与相关人员能力。其他方法:实地观察、收集资料等 。四、系统架构设计1、面向服务架构 SOASOA 一种在计算环境中设计、开发、部署和管理离散逻辑单元 (服务) 模型方法。...UDDI统一描述、发现和集成,提供了一种服务发布、查找和定位方法,服务信 息注册规范, 以便被需要该服务用户发现和使用它。WSDLWeb 服务描述语言对服务进行描述语言。...REST表述性状态转移一种使用HTTP 和 XML 进行基于 Web 通信技术,可以降低 开发复杂性,提高系统可伸缩性。...控制器和视图可以随着模型扩展而进行相应扩展,只要保持一种公共 接口,控制器和视图旧版本也可以继续使用。(3) 功能强大用户界面。...用户界面与模型方法调用组合起来,使程序使用更清 晰,可 将友好界面发布给用户。6、MVPMVP 优点包括:(1) 低耦合。模型视图完全分离,可以修改视图而不影响模型

40840
领券