0.4 一个更大的例子
我的客人认为这个例子很有说服力。他走后,我意识到刚刚所揭示的东西跟我认识的另一个人在一个非常大的项目里得到的经验非常相似。
他们开发交互式事务处理系统:屏幕上显示着纸样表单的电子版本,一群人围坐在跟前。人们填写表单,表单的内容用于更新数据库,等等。在项目接近尾声的时候,客户要求做些改动:划分屏幕以同时显示两个无关的表单。
这样的改动是很恐怖的。这种程序通常充满了各种库函数调用,都假设知道“屏幕”在哪里和如何更新。这种改变通常要求查找出每一条用到了“屏幕”的代码,并要把它们替换为表示“屏幕的当前部分”的代码。
当然,这些概念就是我们在前面的例子中看到的隐藏状态(hidden state)的一种。因此,如果说在C++(www.cppentry.com)版本中修改这类应用程序比在C版本中容易,就不足为奇了。所需要做的事就是改变屏幕显示程序本身。相关的状态信息已经包含在类中,这样在类的多个对象中复制它们只是小事一桩。