MVC包括模型、视图和控制器三个角色,模型代表具体的数据和行为,视图表示数据的显示,控制器则是获得用户操作,改变数据,控制视图显示。其核心在于从模型中分离视图,以及从视图中分离控制器。

对于Windows Form程序(VB 6是类似的),控制器基本是系统内置的窗体和各类组件(控件),不需要写获得用户操作的代码,只需要在动作的事件响应的代码中写具体的操作就可以了。

下来是模型的设计,一般是一个或一组类,该类有具体的数据和操作代码。

对于数据显示,即视图,可以是一个方法或者一组方法,或者一个类。关键在于数据的刷新。这里有2种方法:

第一,在模型中定义一些事件,代表数据的更新或者更改,在视图中订阅这些事件,在事件触发方法里写具体的视图更新代码;

第二,在动作完成后的代码中调用刷新数据显示的方法或者类,改变视图;

个人偏好第一种方法,Web下的程序肯定是使用第二种方法,这样,模型类的也更纯粹;但对于Form程序,有事没事更新界面数据似乎不好,而且保存用户状态,例如当前选择的数据(表格)也比较麻烦。另外,一个操作最终更新的数据有时是需要上下文,是不确定的,通过事件触发,好像易于控制一些,封装性也好一些。

虽然大部分的Windows Form程序设计,不需要注意MVC角色,也可以很好的完成,但个人觉得,从中学习一些东西,提高程序设计和代码质量还是值得的。