MVC学习

引言:

A Wise old computer scienist once said: Make your data structure smart and your code dump.

We need SMART Models, THIN Controllers, and DUMB Views.

最早用MVC还是在MFC中的文档视图框架,不过给人感觉比较繁琐,没怎么好印象。前几天无聊看了一下Python的Django框架,发现它采用了一种MTV(Model Template View)的框架,和MVC差不多。看来MVC使用很广泛,我顺便学习了一下好用在的项目中。

一般来说MVC中Controller控制数据流、Model存数据、View显示数据对应于数据的输入、处理和输出。Controller设计时要thin尽量简洁,Model则必须smart处理各种数据,View则尽可能dumb按部就班的显示Model的数据就可以了。

在C++中MVC可以用Observer观察者模式实现,只是Observer少了一个控制器Controller。在实际程序中Controller对应于鼠标键盘之类的处理,所以一个窗口类就可以搞定了。View的话在windows中就是Canvas之类的画布,每一个Canvas对应一个View。实际实现中,我用多个Canvas访问同一个Model,操作起来好像windows的远程控制界面一样:)。最后也是最重要的就是Model了,简单点的应用一个数据结构就够了,如果复杂的话就要考虑数据库了。

我自己写的程序中Model试着采用Sqlite3数据库,但是每次操作Model都要频繁的访问硬盘,把我的硬盘弄的咔咔响。一般数据库出现这种情况,就要考虑用事务处理插入或修改记录,但现在操作Model却是随机的,所以事务用不着。最后只好用Sqlite3的内存数据库,程序启动时把硬盘中的数据库文件导入内存,程序退出时再保存到硬盘中。

最后补充一点:Sqlite3导入内存数据库时要注意Page size要设置成跟硬盘中的一样,关于Sqlite3用起来还真不错,看来数据库也要好好学一下。

参考:

wiki

阮一峰:谈谈MVC模式

Model-View-Controller

Model View Controller

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注