MVC

MVC
 
MVC中,View 只是显示Model,而不直接改变Model。它是通过Controller来响应鼠标、键盘的输入消息,把输入转化为service,然后把service送给View或Model。用户只通过Controller与系统交互。
 
在MFC下,View是直接拿到windows消息的。 一般情况下, 我们会在View中处理消息,然后直接通知View或Model怎样改变。 View实际上完成了View和Controller的工作。
 
可以特意建立一个Controller,然后把View中的消息直接委托给Controller处理。这样就完全遵守了MVC。
 
另一个想法,让View初步处理消息,把必要的处理委托给Controller。比如存在方法Controller::Save(),如果界面上有Button OK 和 APPLAY,可以让View::OnOk()或View::OnApply()调用Controller::Save(). View本身来控制自身的显示,仅仅把需要响应的特定消息委托给Controller。
 
可以对Controller编码来自动测试View上的绝大多数功能而不依赖于鼠标和键盘的输入事件。也可以把ToolBar等控件视为View,在Controller之上添加脚本解析器,对于界面的特定Button,只需要绑定脚本命令即可。如果对于WPF完成这样的工作,部分界面处理的工作不用程序员的参与就可以完成了。
 
稍复杂的情况下,Controller不是对Model的Façade。每个View都应该有自己的Controller, Controller是对自己所属View的特化。Model的Façade可另外提供。简单的情况下,可以View共享Controller, Controller也许可以完成对Model的Façade工作。
 
至于Controller方法的粒度和View处理消息的职责范围可以进一步考虑。因为没有真正实现,我也不能想出遵循怎样的规则较好。以上只是一个大概的想法。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值