MVC疑问:一个界面对应一个控制类吗?

vurtne 2012-06-24 08:25:30
我的界面除了显示数据,点击界面上的菜单按钮或者其他按钮会 显示菜单界面,消息框界面,跳转到其他界面,除此之外点击其他按钮会 有http链接事件,和检测版本升级 等其他操作。

我的疑问:
1.一个界面对应一个控制类吗?(因为每个界面的需要控制的逻辑不一样,没办法为全部界面公用一个control类),如果把全部界面的业务逻辑放到一个控制类,那这个类不就非常复杂了?

2.如果把业务逻辑放到控制类里面去,那么控制类是不是没办法写单元测试了?(因为控制类需要知道其他具体的类调用相应的方法)。

3.各个界面之间的逻辑处理又是谁来管理,是不是又要一个控制类?(是不是可以这样认为各个模块间,都要有一个控制类来处理之间的逻辑事件?)

4.我目前是使用消息派发器,每个界面都注册为消息的监听者,消息派发器保存所有的监听者,当接收到界面或者其他类发过来的消息后,就发给监听者去处理。那么我的这个消息派发器 是不是属于控制类呢? 但是它没有处理业务逻辑。而是把具体的逻辑处理让各自的监听者(界面)去处理。 消息派发器适合什么情况使用?

5.其他的非界面view类,比如httpEng,版本检测等,这些类不依赖于具体的界面上,谁来管理它们呢?是不是还是需要一个控制类呢?(处理版本检测的回调,然后通知当前活动的界面显示检测的结果)。

6:是不是 其他非界面的类,比如httpEng,版本检测,排序,容器管理等都属于model? 如果是那么model里面又改怎样去管理这么多的类呢?
...全文
554 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gotojyh 2012-06-26
  • 打赏
  • 举报
回复
LZ想问的主要问题是 "要几个控制类"?
vurtne 2012-06-26
  • 打赏
  • 举报
回复
谢谢
pathuang68
(玄机逸士)

查看了资料,对MVC有深一点的认识,很多东西之前都没想透。
laizhiping_rj 2012-06-24
  • 打赏
  • 举报
回复
M 模型 V 视图 C 控制器, view不一定一一对应controller的action(function)
laizhiping_rj 2012-06-24
  • 打赏
  • 举报
回复
lz没有真正理解MVC,建议去找下相关的资料
pathuang68 2012-06-24
  • 打赏
  • 举报
回复
MVC = Model + View + Controller

Model是什么?说得形象点就是Data Model,就是和数据相关的东东或者各种业务逻辑
View是什么?就是用来展现数据的各种人机交换界面
Controller是什么?控制器起到不同层面间的组织作用,用于控制应用程序的流程。

MVC是一个系统架构层面的模式,并不总是和WEB开发相关。

具体到楼主所问的问题,答案就是:一个界面肯定有一个控制类与之对应,但不是一一对应,也就是说其它的界面也可以和该控制类对应。控制类和界面的关系,是一对多的关系。
vrace 2012-06-24
  • 打赏
  • 举报
回复
MVC 就是 界面 控制器 数据模型 分离开咯,这样分开的话,3个部分耦合不高,可以随时方便替换
cbzjzsb123 2012-06-24
  • 打赏
  • 举报
回复
MFC
quwei197874 2012-06-24
  • 打赏
  • 举报
回复
当然不用了
qq120848369 2012-06-24
  • 打赏
  • 举报
回复
额, MVC不是普遍应用在WEB里吗.

用在WINDOWS这种操作系统消息机制里:

1, 消息派发: 等价于URL路由, 是整个程序唯一的入口,将消息路由到某个Action的某个Method。
2, Model: 也就是暴漏不变的DB/CACHE/FILE接口,封装不同的DB/CACHE/FILE实现。
3,Action: 消息路由到某一个Action,调用指定Method。
4,View: 由Action操作Model获取数据,处理数据后填充到View内进行可视化展示,View可以任意变化,接口可以变,只要重写Action内Method实现即可。

对应到C++里,也就是主循环里的消息事件派发到特定控件,这里控件相当于Action,消息相当于Method,其实就是一次消息回调处理,细致一点可以在一个Method内做switch case,毕竟没有那么多不同的自定义信号给控件来设置。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧