熬之滴水穿石:Delphi曾经的利器(3)

本文探讨了Delphi VCL架构的设计哲学,重点介绍了面向对象技术如继承、封装和多态的应用。文章通过具体实例展示了如何使用inherited关键字实现方法的重写,并讨论了组件类的派生机制以及设计模式在VCL中的体现。
摘要由CSDN通过智能技术生成

                              7--VCL的架构之美

看VCL代码的时候,还是看到了写过程代码不曾感受到的面向对象设计所涉及到的内容。这里面三项内容是:继承、封装和多态。这三项也是面向对象所涉及到的核心技术了,一个完美的架构会将这三块内容用到了极致。Delphi的VCL正是如此。

 

我们在java编码时及C++编码时,常常用到了抽象方法来定义类,一般都会用派生类的方法来覆盖父类。只是这样的写法,似乎在VCL里看到的并不多。感觉DELPHI里一般喜欢用接口方式替代了抽象方法。实际上,我觉得接口方法更加让我理解抽象的方法,也比较符合面向对象的开发趋势。在java的世界里,放眼过去尽是接口方法。实际上在DELPHI的底层代码中,很喜欢在父类定义虚拟的方法(virtual),然后再用派生类的方法去覆盖。这种方法看上去很像抽象方法的过程,然而该方法还是实际生成并且是段空代码。这样的方式实际上便于对于父类方法的完善,而且还会让子类方法进行调用父类的方法,当然这个过程都是由程序员自己决定的。

 

事实上,很多派生类的方法都可以采取一个叫inherited的方法,先实现父类的方法,然后在实现自身的方法。delphi许多控件都是采取类似的方法,这样的方法我们通常可以看到inherited Create(AOwner)写法当然就是还有一种有趣的写法,那就是先实现自己(派生类)的方法,然后再调用父类的方法,当然这个时候还可以在这个调用父类代码下再写些代码。这种方式的出现,确实让程序员有了更多的选择的权利。整个代码在面向对象的基础上层层分离,但又可以依据inerited前后联系起来,可以解决许多场景需要处理的问题。

 

当然我们也可以让派生类完全的覆盖父类的方法,在调用时只让派生类的代码执行而不需要理会父类方法的内容。DELPHI程序员用的多的类估计就是由Component类派生出来的各类控件了。该componet类下基本分为可视化组件和非可视化组件两类。除此之外,VCL的代码中许多都融入了设计模式的方法,设计模式我基本上是在学JAVA时才慢慢熟悉起来的,07年当我阅读VCL底层代码时,发现这种被推崇的模式包括JAVA中几个常用的框架,这些都是DELPHI的VCL基本都涵盖的内容,看来任何事情都是一脉相承而已,只是各自加个概念玩个理论套个外壳就成了一个新的框架,实际上都是一个模子衍生出来的东东。

                                                  (未完待续................)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值