MVC 设计模式VIA 的实现

. MVC模式
MVC是三个单词的缩写,这三个单词分别为:模型(Model)、视图(View)和控制(Controller)
1.优点:降低耦合度、增强内聚性(如图1层和区的概念)
2.使人员职能分工明确,有助于团队开发
3.有助于分布式开发
4.封装分解系统的复杂性 (可以对比D2000 appsms.cpp
的实现的复杂度)
 
二、MVC简介
(1)视图(View)代表用户交互界面,有可能为HTML、XHTML、XML和SmartClient。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。
(2)模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。
(3)控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,
并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
,   D300中的MVC calendar为例
         分别对应三个文件: View :
calendarview.cpp
                                                
Model :
calendarmodel.cpp
Controller: appcalendar.cpp
 
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,
可见,所有的消息映射都是在appcalendar.cpp既Controller中,在View上操作,都会反映到Conrtoller中,然后Controller会更新View或把调用Model完成相关的业务操作
D300
“主动—MVC模式,也是通常意义下的MVC模式
 
【注:为什么说是主动的?View不是等Controller通知它Model更新了然后才从Model取数据并更新显示,而是自己监视Model的更新(如果用观察者模式)或主动询问Model是否更新。前面那种等待Controller通知的方式是下面所介绍的“被动—MVC”的实现方式。】
四,D300中 MVC模式的初始化:
CalendarAppC::CalendarAppC()
{
 mModelP = new
CalendarModelC();
 mViewP = new
CalendarViewC();
  mModelP->AddView(mViewP);
 AddModel(mModelP); 
 UiRegisterSpeKey(KP_FLIP_KEY,
this);
#ifdef FEATURE_VCALENDAR
 mRetMsgId = 0;
#endif 
 AudioC::GetInstance()->RegisterSndApp(APPID_CALENDAR,
SCHEDULE_APP_PRI, APPMSG_SOUND_EVENT, 0);
}
由于基类实现了MVC,自己写APP的话,可以套用相同的格式,这样即方便今后对代码的查看与修改,同时可以得到基类的更多特性的支持

 

Windows API,MFC,与.NET

写一篇类似自传性质的对Windows编程技术自己的认识.
最早接触的是QBASIC,想必当年玩过小霸王学习机的用户都有感触,除了带的8位游戏机的功能,对这个是最感兴趣的.高中自学了C,大学系统一点学C又自学了C++,偶然的机会,看了ASP在学校网站做Web程序员,没过多久我把网站的后台改成了ASP.NET,于是乎接触了C#近三年.

毕后的第一份工作,嵌入式的手机系统,用的是C与C++,半年的时间,看完了<<EffectiveC++>>等几本书,由于手机系统的应用层,部分是参照Windows设计的于是又半年看完了<<WindowsAPI程序设计>>,系统中的消息机制是参考MFC来做的,于是下个半年在看<<MFC
Windows程序设计>>.

现在是"云"的时代,分布一直都是我比较感兴趣的,大学时做过第一个分布式应用,感觉很好.所以现在在看WCF,也许起初认为还挺简单,但越到后面配置起来相当的复杂.
Windows API,MFC,.NET是编程技术的进步,给编码人员挺供了越来越舒适的编码环境,没有谁好谁坏,跟据不同的场景,最好适的就是最好的.

 

viaet

最近收到几封Email,都是在做VIA的朋友们,很高兴能认识你们,共同研究VIA工作当中遇到的问题.方便大家交流,还是建一个在线的群好些,提出疑问并分享经验. Http://www.ViaET.cn (VIA 的外星人们:)