http://groups.msn.com/LightsCafe/delphi.msnw?action=get_message&mview=0&ID_Message=120&LastModified=4675400227755500550
还有http://groups.msn.com/LightsCafe/delphi.msnw?action=get_message&mview=0&ID_Message=158&LastModified=4675483499447560094
关于抽象类和接口的选择我现在更倾向于使用抽象类。之所以这样是因为,大多数应用所涉及到的继承模式只是单根继承,这样的话使用抽象类足够了。而如果涉及到一个类从多个接口继承的话,那么就很自然的引出一个问题:将一个对象赋给它所实现的不同接口变量时应该如何维护对象的生存周期。这个问题现在可以找到的最好解决方法就是象delphi这样的接口生存周期自维护了,虽然这项技术有的时候也会因为使用不当造成问题,但是它却从很大的程度上减少了程序员维护接口生存周期的负担。
关于抽象类和接口的选择我现在更倾向于使用抽象类。之所以这样是因为,大多数应用所涉及到的继承模式只是单根继承,这样的话使用抽象类足够了。而如果涉及到一个类从多个接口继承的话,那么就很自然的引出一个问题:将一个对象赋给它所实现的不同接口变量时应该如何维护对象的生存周期。这个问题现在可以找到的最好解决方法就是象delphi这样的接口生存周期自维护了,虽然这项技术有的时候也会因为使用不当造成问题,但是它却从很大的程度上减少了程序员维护接口生存周期的负担。
Don Box在COM本质论当中提过一个使用接口的最直接的理由,那就是由于接口的二进制模型稳定。我想这可能是促使我现在使用接口的唯一原因了。尤其将这项技术应用到动态链接库内对象设计的时候,是一种很美妙的想法。