Asp.Net MVC与Observer模式

今天先说一下Observer Pattern,然后结合一下MVC模式分析两者之间的联系.可能有说的不到之处,请看过的达人提出宝贵意见.

还是先说下定义,Observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

Observer模式中包括几点要素:

1、主题对象,能对多个依赖于它的对象(多个观察者)进行处理,使之得到通知并自动更新.

2、观察者接口,接口是抽象出一个方法,用于更新观察者.

3、观察者对象,用于真正实现上述接口.

 

上面这些大家看下,下面直接上代码,代码中会一步一步说明MVC与Observer的对应关系

在MVC模式中视图是观察者Observer,Controller控制器担当视图和模型的中介者,因此这里的MVC模式是采用Observer模式、中介模式的复合模式,但是有一点,Controller是View和Model之间的中介,但是在Asp.Net MVC中,View和Model存在直接的联系。View也是可以直接调用Model查询其状态信息。当Model状态发生改变的时候,它也可以直接通知View.

Model在MVC架构中起的作用非常重要,它才是UI业务逻辑真正的实现层。所以Model的实际上是Business Model(业务模型).

而 Controller仅仅起一个"桥梁"作用,它负责把View的请求转发给Model,再负责把Model处理结束的消息通知View。 Controller就是一个消息分发器。Controller是用来解耦View和Model的,具体一点说,就是为了让UI与逻辑分离(界面与代码分离)。

MVC的View直接与Model打交道,Controller只转发请求(View的请求)和通知(Model处理完之后的通知),不传递数据(业务结果),而是由View直接向Model拿数据.

在MVC中视图和控制器都依赖于模型。但是,模型既不依赖于视图,也不依赖于控制器。这是分离的主要优点之一。在许多胖客户端应用程序中,视图与控制器的分离是次要的,实际上,许多用户界面框架将角色实现为一个对象。另一方面,在 Web 应用程序中,视图(浏览器)与控制器(处理 HTTP 请求的服务器端组件)的分离是很好定义的。

从消息交换模式的角度来讲,Model针对View的状态通知和View针对Controller的用户交互通知都是单向的,我们推荐采用事件机制来实现这两种类型的通知。从设计模式的角度来讲就是采用观察者(Observer)模式通过注册/订阅的方式来实现它们,即View作为Model的观察者通过注册相应的事件来检测状态的改变,而Controller作为View的观察者通过注册相应的事件来处理用户的交互操作。

如此我们再将上面的代码再使用事件机制来实现.

转载于:https://www.cnblogs.com/tangzhenjie/p/3297009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值