tfilestream和tmemorystream都继承自抽象类tstream,这意味着我们可以使用一套代码完成对文件和内存的存取操作。因此,定义一些接口的时候,我往往倾向于将参数的类型定义为抽象类,而不是具体类。比如,要完成保存功能的一个函数,定义成
function save(astream: tstream): boolean;
就比定义成
function save(astream: tfilestream): boolean;
要灵活的多。
前一个定义是具有前瞻性的,因为它可以适用于以后可能出现的新型态的流。而后一个定义只适用于tfilestream这种流(当然包括tfilestream的子类),呆板多了。
我的习惯:如果存在抽象类,那么尽量将参数定义为抽象类的类型,毕竟,我们无法预见未来。
八.多使用taction
delphi 4以后引入了action的概念,并且在standard组件栏中增加tactionlist组件。使用action的好处是,控件状态同步的烦恼从此一扫而空!