改变思路,从另一个角度使用多态

发表于:2007-06-21来源:作者:点击数: 标签:
下一页 1 2 3 4 摘要: 作者在写《傻瓜打表》部件时,原本想提供打印预览功能,因当时眼界较窄,所知道的只有一个方法实现打印预览。 打算使用多态技术,使用该方法,只要两个类具有相同的部分接口(方法、属性及参数),即便这两个类毫不相干,也可以通过变

下一页 1 2 3 4 

   摘要:
  作者在写《傻瓜打表》部件时,原本想提供打印预览功能,因当时眼界较窄,所知道的只有一个方法实现打印预览。

打算使用多态技术,使用该方法,只要两个类具有相同的部分接口(方法、属性及参数),即便这两个类毫不相干,也可以通过变相用多态技术提供对这两个类的前期绑定。

  作者在写《傻瓜打表》部件时,原本想提供打印预览功能,因当时眼界较窄,所知道的只有一个方法实现打印预览: 定义一个 Object 变量(如:ObjPrn),用该变量替换程序中的与打印有关的语句中的 Printer 对象,打印时,首先设置

Set ObjPrn = Printer

预览时设置

Set ObjPrn = frmPreV.Picture1

  用上述方法虽然可以实现打印和预览,但是,显然对打印机和实现预览的图像控件的访问都是后期邦定的,这在效率上是不高的。打算使用多态技术,可是 Printer 对象和 Picturebox控件不是从一个类(VB中可引用的)派生的。因无法实现打印和预览的前期绑定,故没有提供打印预览功能。

  一天,当再次阅读VB帮助中的多态章节时,突然想到了一个方法,使用该方法,只要两个类具有相同的部分接口(方法、属性及参数),即便这两个类毫不相干,也可以通过变相用多态技术提供对这两个类的前期绑定。
多态是干什么的?

  MSDN说:多态意味着许多类可以提供同样的属性或者方法,而且调用者在调用这些属性或方法之前,不必知道某个对象属于什么类。
多态的意义之一就是,通过多态接口,对多个不同类的访问可以获得高效的前期绑定。

  一般来说,如果几个类具有部分相同的属性、方法,但却不是用多态接口实现的(例如Printer和Form),将不能提供类似多态的性能
但是,“软件”正如其名字中的“软”,是一个灵活的、可塑的东西,我们可以改变思维模式,换一个角度:没有多态接口的两个类(如Printer、Picturebox)如同两个人不同父,不是兄弟;但我们可以让其子同娶一家之女(另外具有多态接口的两个类),其子为连襟,其儿媳为姐妹,而通过其儿媳访问其本人具有相同的路径。

  还以上例,其中的关键是:添加三个类,分别Printer之妻、Picturebox之妻、二女之父(在二女中要实现的、Printer和Picturebox共有的部分接口)。下面就用打印和预览为例,介绍该方法:

原文转自:http://www.ltesting.net