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

博客换主机了

之前用的NBVPS各种不爽,抽时间换成了burst。话说burst有点小贵,不过速度很惊艳啊,终于告别之前蜗牛般的vps了。
闲话少说,这段时间要写的事情很多,但刚买了Kindle4还在折腾中,有时间一一补齐吧。
Show一下我的Kindle4:

今天看到和想到的

最近有点心神不宁,看了些博客,自己也想了些问题:

关于责任:

男人和女人的区别是:女人可以犯错误而推卸责任;男人则不允许犯错误,即使犯了必须负起责任。

关于思考方法:

看老赵的博客,在老赵书托(4):浪潮之巅(内含牢骚,不喜勿入)中看到老赵的思考方法,本人十分赞同摘抄如下:

搞技术,死脑筋,凡事都要想很多遍,想个明白,不明白就不表态。我不喜欢猜测,不喜欢无法验证的事物,因此我成不了那些常见的、著名的、经常指点江山的分析师。每次有人问我对某某事物未来的看法,十有八九我只会婉言谢绝。有一分事实,说一会道理;有七分依据,不做八分肯定,即使无法避免,也尽量从多个角度给出各种推测,而不只是推测出自己喜欢的结果。

也就是说提倡怀疑精神,不盲从。

经济危机的脉络

经济危机对我们来说不算陌生,从美国的次贷危机到现在欧盟的危机。至于经济危机的根源,用学校里老掉牙的论调是万恶资本主义早晚要灭亡,我们姑且抛开这些价值观误导或偏见,为什么资本主义有无法根除的缺陷但却持续繁荣?为什么每过十几年会有一次经济危机?

这几天我恰好看到这方面解释最详细的文章 百年老狼——经济危机的脉络。这篇文章生动有趣,逻辑严密,大部分观点我是第一次听说,我觉得文中也太夸大金矿的作用了吧,有时间可以慢慢琢磨:)。