MVC模式小结

MVC模式是针对GUI应用的软件架构模式,他体现了关注点分离这样一个基本的设计方针,将一个人机交互应用涉及的功能分为Model,Controller, View三部分,以下是它们相应的职责。

--Model 是对应用状态和业务功能的封装,Model接受Controller的请求,并完成相应的业务处理,在状态改变时向View发出相应的通知。

--View 实现可视化界面的呈现并捕捉最终用户的交互操作(比如鼠标和键盘操作)。

--Controller接受View转发过来的用户操作,完成响应的UI逻辑。如果需要涉及到业务功能的调用,Controller会直接调用Model。在完成UI处理之后,Controller会根据需要控制原来的View或者创建新的View对用户交互操作予以响应。

以下是三者的交互图

image

很多人认为Controller仅是View和Model之间的中介,其实不是这样,View和Model也可以有直接联系,View可以直接调用Model查询其状态信息。当Model状态发生改变时,他也可以直接通知View。i如在一个提供股票实时价位的应用中,维护股票价格变化信息的Model在状态改变时,可以直接通知相关的View改变其显示信息。

Model针对View的状态改变状态通知和View针对Controller的用户交互通知都是单向的,可以用事件机制来实现。从设计角度来看,View作为Model的观察者通过注册响应的事件来检测状态改变。而Controller作为View的观察者通过注册相应的事件来处理用户的交互操作。

controller -----观察----->View-----观察----->Model

Model维护着整个应用的状态并实现所有的业务逻辑,所以它更多是一个领域模型,而对于多层架构来说,Model更多体现为访问业务层的入口,如果是面向服务的设计,业务被定义成相应服务,并通过接口(契约)的形式暴露出来,这里Model被表示成相应服务调用的代理。

原文地址:https://www.cnblogs.com/grkin/p/2970449.html