现讲讲 this->Draw().
这个程序里的 this->Draw() 与 Draw() 功能上完全一样,但却体现了不同的思路。我们之所以需要一个框架,目的是为了让软件具有更好的灵活柔韧性,高度可扩展性。尤其是可扩展性,这也是 c/c++, java, .net 崛起,而basic 没落的重要原因。可以这么说,程序员水平高下的其中一个判据是,程序的可扩展性,这里体现出了对未来的预测。
这个演示程序使用了 link list 而不是 静态数组,目的是可以让 控件容器 可以任意添加或减少控件,这是一劳永逸的做法。 (这里归结为 动态数据 vs 静态数据)。
数据的扩展比较容易,但 行为 的扩展却步那么方便,尽管可以使用 virtual. 假设我们准备对 editBox 进行扩展,比如只允许数字输入,我们可以
class NumberEditBox : public EditBox
然后重载 EventHandler,过滤 按键 就可以完成。但是有时问题并不是那么容易就解决的。我们的演示程序很简单,完全的重载代码量不大,可是很多的时候是没有源代码,或是重写太费时,这是如何做? |