我们总是梦想着对象化(七)

在正式开始之前,需要有一个很乏味的前置知识的解释。当然,有VFP帮助里的内容,也有我自己的体会认知。

首先要解释清楚的一点,就是所谓的对象化处理数据到底意味着什么?

在BOE的《我眼中的VisualFoxpro 8》中,有这样一句来描述CursorAdapter:CursorAdapter是一个基于松散耦合思想设计的对象化的Cursor处理模型。实际上,我所能解释的内容远远无法到达这篇文章的认知高度。但是,从实用性的角度来解释一下,我想,我还是有这个能力。

就像BOE所说,“Cursor的管理方式对象化了,可编程性更好,有利于代码的封装。”事实上,我当初所有的努力,也正是为了将界面UI的操作和数据操作分离,以便更好的服务于编程以及代码的维护。也许,你现在仍旧不理解这样做的好处,我相信,就像我在预告篇里所说的,当你阅读完本文后,你会有脱胎换骨的快感。

我所说的对象化处理数据,实际上就是建立一套管理Cursor的对象。当然,如果你精通CA的话,这会变得异常简单。而想要更有效的管理Cursor,那么,你应该继续看下去。

很多人止步于CursorAdapter(CA),这其实无伤大雅,当你看完后面的文字后,你回过头来再看CA,你真的会哈哈大笑。

这里,还有两个非常非常重要的概念要提及,数据工作期/数据工作区,以及缓冲。

在我们组织自己的Config.fpw时,实际上对工作期已经有了基本的认知。有一些Set命令的适用范围,是当前数据工作期。如果一个数据工作期比喻为一栋楼,那么,数据工作区就像是其中的一个个房间。你可以在这栋楼里走家串户,轻松自如,尤其是整栋楼都是你的时候。在VFP中,如果你不是特别的对其进行设置,默认情况下,你拥有的就是一栋楼。然而,你可能太壕了,你可以买下整个小区。这时,小区的每一栋楼,就是一个数据工作期,放在VFP中,就是所谓的私有数据工作期。无论是一栋楼,还是一个小区,其中的每一间,都是一个数据工作区。每一个数据工作区,都可以存在一个Cursor。所谓的当前数据工作期,就是指“一栋楼”。你想拥有一栋楼,还是一个小区?

私有数据工作期的存在,可以让我们打开同一表单的多个实例,它们就像一个被克隆的群体一样,拥有一模一样的外观和操作逻辑,但是,你对它们可能执行不同的动作。事实上,你不可能“同时”操作多个表单实例,你做的最多的是在多个表单实例之间进行切换。而此时的表单,只能是非模式的(WindowType = 1),而它们的数据工作期,只能是私有的。

在我们设计业务逻辑时,应该为用户提供在数据保存前逻辑上可以反悔的操作:撤销。我真的无法想象在没有缓冲的世界里,要达到这样的效果,需要写多少代码。随着你对缓冲的理解的加深,你会发现,你可以为用户提供更好的交互。

在VFP中的缓冲,分为保守式和开放式。我想,它们的解释,在VFP帮助文件中已经详细的没办法再详细了,所以,我这里不再过多的解释。我唯一需要提醒的是:如果你实在分不清两者的区别,那么,你只有一个最佳选择:开放式缓冲。

下一次,我们开始构建对象化管理Cursor的“模型”。你,准备好了吗?

你的反馈是我写作的动力,欢迎评论,未完待续。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G0AF0700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券