传统的MVC模式

本文详细介绍了MVC(模型-视图-控制器)和MVP(模型-视图-呈现器)模式的基本概念及差异。MVC将应用程序划分为三个相互独立的组件:模型、视图和控制器。MVP模式作为MVC的一种变体,在某些框架中被广泛应用,它更加严格地分离了关注点,确保模型与视图完全解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于MVC模式,我们可以将可视化UI呈现,UI处理逻辑和业务逻辑分别定义在View,Controller,和Model中。

    可视化UI呈现->View

    UI处理逻辑->Controller

    业务逻辑->Model

    MVC模式中,这三者之间的交互并没有严格的限制,比喻允许View和Model直接交互

 

MVC模式的变体MVP

    MVC是一种很广泛的概念,没有对View,Controller,Model之间设置一个严格的规则。所以对于特定的开发框架比如(ASP.NET Web Form),出现了MVC模式的变体。

    在ASP.NET Web Form中,MVP中的M和V分别对应MVC中的Model和View,而P(Presenter)代替了Controller。MVP更多的变更时体现在这三者之间的交互上。

    在MVP中,能够与Model进行直接交互的只能是Presenter,View只能通过Presenter调用Model。Model在这里保持独立性,与可视化元素的呈现(View)无关,与UI处理逻辑(Presenter)无关

    

      MVP避免了View和Model之间的耦合,更进一步降低了Presenter和View之间的依赖。Presenter依赖的是一个IView的接口,即View实现的接口IView。

      MVP三要素之间的交互主要体现在两方面,即View/Presenter和Presenter/Model。Presenter和Model之间,只是Presenter对Model的一个单项调用。而整个MVP之间的核心是View和Presenter之间的交互。依据View和Presenter之间的交互方式,以及View的职责,又将MVP划分为PV(Passive View)和SC(Supervising Controller)两种模式。

      PV(Passive View)模式,即是一个被动的View,View不会涉及到任何UI处理的逻辑,所有针对UI元素(控件)的操作都不是View自身来控制的,而是交由Presenter来控制

        -->采用PV模式来实现View,需要我们将View中UI元素通过属性的形似暴露出来。具体说就是定义IView接口的时候,需要定义基于UI元素的接口,是Presenter可以对View进行细粒度操作。在理想的情况下,定义IView接口的UI元素属性,应该与平台无关性,不使用控件类型直接定义。PV模式下,所有的UI处理逻辑都定义在Presenter中,接口IView中成员也会变得很多。

        -->SC模式,降低了Presenter的复杂度,将简单的UI逻辑转移到View上,这些处理逻辑会在IView接口中定义。对View的操作,View本身并不进行相应,而是将请求转发给Presenter。Presenter针对Model调用,驱动View或者是创建View。

 

ASP.NET 中的MVC

   ASP.NET MVC是建立在ASP.NET平台上,基于MVC模式建立的WEB应用框架。

   自定义IHttpModule对Http请求进行拦截,解析出目标请求的Controller和Action。

   自定义IttpHandler,对目标Controller激活。

   ASP.NET MVC中的Model仅仅是绑定到View上的数据而已,不包含任何的UI逻辑代码。Model仅仅是基于View的,也可以称其为View Model。用于构建ASP.NET的MVC模式可以理解为M(Model)-V(View)-VM(View Model)-C(Control)

转载于:https://www.cnblogs.com/guichi/p/4551546.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值