[悖论]MVC、MVP、MVVM有优劣之别吗

偶然间,看到一个说法:AJAX是针对MVC的,不符合MVVM的浪潮。

引发了一个思考:MVC、MVP、MVVM有优劣之别吗?

过往面试也曾有人问我这个问题。
本文的目的,不是介绍MVC、MVP、MVVM是什么了。
MVP较MVC出现的晚,的确也是因为某些缺陷出现了这样的方案,MVVM又因为MVP的某些缺陷出现。

究竟孰优孰劣?笔者的观点:这本身就是个错误的思考点,一个埋雷的坑。

若MVC<MVP<MVVM,假定顺序是这样的。
那么,你就应该通盘采用有较大优势的一个。

笔者认为,这MVC、MVP、MVVM没有任何优劣可比。仅仅只是适用的场景不一样罢了。
  • 场景一:打开一个页面,简单的请求某个string,然后,显示出现。

    • 谁愿意用MVP、MVVM。我第一选择是用一个最简洁的类 extends 某BaseMVC,直接了解的,调用设置。一个文件足矣。
    • 倘若用MVP,你是不是起码得4个文件。类的数量多了。维护成本变高,你难道不累?
  • 场景二:复杂页面,API调用多,但展示什么,逻辑还是蛮清晰的。

    • 你当然不应该用MVC,这样显得Activity极其庞大。
    • 用Contract定义接口。确实会显得更清晰。
  • 场景三:复杂页面,API调用多,关键是某些API变,Response值多样,但页面却不大动。

    这个时候,你又选择什么呢?
MVC、MVP、MVVM是编程技巧,并没有什么优劣之分,差异的是使用场景。

我认为大部分时候,你不会用到MVVM,因为这种场景少。能出现这种场景,我相信,后端或者产品设计需要优化了。
在平时研发过程中,我更多的会结合MVC、MVP的使用,速战速决。一个页面,除了UI费时,接口对接的耗时,可以得到很大的压缩。

同样的道理,设计模式有很多,但是有一个叫混合模式。

MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码。 1. MVC(Model-View-Controller): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Controller(控制器):处理用户输入,并根据输入更新模型和视图。 在MVC中,模型和视图是相互独立的,通过控制器来协调数据的更新和视图的更新。用户的输入首先由控制器处理,然后控制器更新模型的状态,最后模型的变化会反映在视图上。MVC模式可以有效地分离应用程序的逻辑和界面。 2. MVP(Model-View-Presenter): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Presenter(展示器):作为View和Model之间的中间人,处理用户输入并更新模型和视图。 在MVP中,Presenter负责处理用户的输入,并根据输入更新模型和视图。View只负责显示数据和将用户输入传递给Presenter,而不直接与模型交互。这种分离使得视图和模型可以独立开发和测试。 3. MVVM(Model-View-ViewModel): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - ViewModel(视图模型):作为View和Model之间的中间人,处理视图的状态和行为,并将数据从模型转换为视图可用的形式。 在MVVM中,视图通过绑定(数据绑定)与视图模型关联,当模型的状态发生变化时,视图模型会自动更新视图。这种双向绑定使得视图和模型始终保持同步,减少了手动更新视图的代码量。 总结来说,MVCMVPMVVM都是用于组织和管理应用程序的代码,它们都有各自的优势和适用场景。选择哪种架构模式取决于应用程序的需求、团队的技术背景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值