模式对比——MVC对比MVVM

引入

MVC模式与MVVM模式是两种常见的模式,它们究竟有什么异同呢? 其出现是为了解决什么问题呢? 带着疑问我对两种模式进行了一下对比。

背景

大背景:用户界面需求容易变化。如果系统使用的寿命很长,可能经常需要修改用户界面。

时间点:

  • MVC模式最早由Trygve Reenskaug在1978年提出[1],是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。
  • MVVM由John Gossman于2005年在他的博客上发布。MVVM由微软架构师Ken Cooper和Ted Peters开发,通过利用WPF(微软.NET图形系统)和Silverlight(WPF的互联网应用派生品)的特性来简化用户界面的事件驱动程序设计。[3]

目的

  • MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能

MVC通过直接降低修改成本来提高效率

  • MVVM专为现代 UI 开发平台量身定制,其中视图由设计人员而不是经典开发人员负责。设计人员通常更注重图形和艺术,与传统开发人员相比,编写的经典代码更少。

MVVM通过更好的适应精细化分工(对应现实中的UI设计师与程序员的分工)来提高效率(生产工具要适应社会化分工)

解耦方式

  • mvc通过将交互式应用程序分为处理(Model)、输入(Controller)、输出(View)三个部分来解耦

单纯从代码解耦的方式来看代价:MVC目的是为了解耦易变的界面和稳定的业务逻辑,但是为了考虑职责分离原则,将界面分为输入和输出。在输入和输出具有强内在关系的场景下,MVC的代码实现成本将会提高
还有一个根本性问题,即必须判定界面和业务逻辑耦合是影响产品生产的最主要矛盾

  • mvvm通过将交互式应用程序分为业务逻辑(Model)、显示逻辑(ViewModel)、显示视图(View)三个部分来解耦。其中View与ViewModel使用数据绑定相关连

单纯从代码解耦的方式来看代价:MVVM目的是为了适应分工,将界面开发与逻辑开发分离

参考

发表评论

为防机器,验证码请直接输入4个数字1

*