摘要:关于MVC模式 说到这个,还是离不开MVC模式,model是数据的抽象,view是视图的抽象,controller是交互的抽象;之前有一篇文章简单介绍过一个MVC的例子;其中的关系大致可以用下面这段伪代码来了解: model.setDataSource(xxx); //从xxx处拿到数据 view1
阅读全文
摘要:以Head First中的一张图为例,说明这个问题: 假设我们有一个应用程序加simuduck, 用户可以执行simuduck -p xxx, 其中xxx是鸭子的类型,然后程序会根据用户的输入生成不同的鸭子并显示出来; 那么程序在设计时,我们分两部分,一部分是专门写了一个鸭子类库,提供一个头文件,里
阅读全文
摘要:HeadFirst 设计模式一书中,开篇就提到了这个有趣的点: 当我们想让鸭子能飞的时候,首先跳出来的想法是给鸭子类增加一个fly()方法,然后所有的子类直接继承完事; 结果,有一个橡皮鸭类也继承了,导致了我们不想看见橡皮鸭满天飞的后果;这里显然是有问题的,然后我们在想,橡皮鸭类中直接overrid
阅读全文
摘要:Model-View-Controller MVC模式是个威力强大的复合模式,是由数个设计模式结合起来的模式; 我们先看一下一个mp3播放器的设计,来由浅至深地了解这个设计模式的精髓所在: 从最直观的地方入手,我们不要先入为主的去使用mvc这个模式,而是尝试用自己最为直观的方式去设计这个应用,那么事
阅读全文
摘要:引用计数是一种很实用的设计,我们可以在很多地方看到它的使用: 比如GUI中的自动垃圾回收机制,就是这么搞的,比如我们在一个按键的回调中需要创建一个view并显示,那么我们会new一个pageiew的对象,比如var view_instance = new xx::view ,然后present这个v
阅读全文
摘要:最近在学习GUI框架,发现GUI本质上就是一个大状态机。以EW为例,在每次loop的update之前,都会判断这次是否有input/signal/device/timer这四类会改变系统状态的外部变量(这些就是各种各样的condition)。如果有,再去执行对应的slot(也就是action),执行
阅读全文