2011年2月24日
摘要: 有关TDataSet的研究CND8学院 Delphi教程 发布日期:2008年07月09日 将本文收藏到: | 收藏到本地 | 复制本文地址有关TDataSet的研究 VCL 的数据库框架中有一个很重要的抽象类叫TDataSet ,它可以处理非BDE 的数据源。鉴于Delphi的很多数据库感知控件都是以TDataSet作为接口和数据库连接的,为了重复使用Delphi现有的资源,已经使我们的小型数据库能更加健壮,更加可移植,已经提出公共接口,针对接口编程,因此决定将原来的GPF控件改写由TDataSet继承。TDataSet本身自己已经封装了记录缓冲系统。Buffers就是记录它的记录缓冲区的。 阅读全文
posted @ 2011-02-24 16:25 麦爸Simon 阅读(445) 评论(0) 推荐(0) 编辑
  2010年12月13日
摘要: 所谓BootStrap设计法是指父类会定义各种服务方法,但是这些服务方法需要有特定的标的,例如Window Handle或是Window 的 Device Context Handle。父类在实现服务方法时都会使用这些特定的标的,但是这个特定的标的却只由派生类提供,并不由父类提供。这种让特定的标的延迟到派生类才提供的设计便称为BootStrap设计方法,这也就是说使用这种设计的类并不能且不应该创建父类对象,而只能创建派生类对象来执行。 --摘自《Inside VCL》 阅读全文
posted @ 2010-12-13 20:15 麦爸Simon 阅读(463) 评论(0) 推荐(0) 编辑
摘要: Place Holder方法是VCL Framework在设计核心组件类时最常使用的手法。所谓Place Holder方法是指父类的一些虚拟方法被实现为空白的函数面不声明为抽象方法,例如TCanvas类的虚拟方法CreateHandle便使用了Place Holder设计。 使用Place Holder设计的好处是避免了抽象类的缺点,另外父类如果稍后觉得需要加入任何的实现,那么就可以在Place Holder方法中再加入实现程序代码即可。由于Place Holder方法是空白的,因此也不会增加执行码的大小。如果稍后父类加入了Place Holder方法的实现,那么派生类可以选择直接执行派... 阅读全文
posted @ 2010-12-13 19:09 麦爸Simon 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 许多的C/C++ Framework喜欢使用抽象类来定义父类,然后再在派生类中改写父类以提供实现服务。 不过VCL Framework基本上不喜欢使用抽象类,因为抽象类有一些问题。第一是Object Pascal 允许程序员创建抽象类对象,这会导致执行时期错误,虽然创建抽象类对象在主义上有问题,但在语法上却是合法的,为了避免产生问题,VCL Framework并不喜欢使用抽象类。第二是Object Pascal 可以使用接口来取代抽象类,而且使用接口设计比较符合现代面向对象的趋势。第三,VCL通常倾向使用Place Holder 方法来实现一些抽象方法。 摘自《Inside VCL》 阅读全文
posted @ 2010-12-13 18:59 麦爸Simon 阅读(274) 评论(0) 推荐(0) 编辑