请俱有友好精神的Delphi高手赐教delphi接口问题!!!送分啦!!! ( 积分: 50 )

  • 主题发起人 主题发起人 BeCalm
  • 开始时间 开始时间
B

BeCalm

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手狂送分分活动现在开始,参于者只需回答以问题即可:
1.如何理解接口机制已经不再是简单的为了满足支持com组件而引进的一种外挂机制,不再是一种单纯的技术支持绑定,它已变为delphi中Object Pascal程序语言的内在通用机制;重点要说清楚这两种支持(对com的支持,对程序语言的改良性支持)的区别之处,最好能通过实例讲解清楚;
2.java中的接口机制很重要的方面就是实现了程序弹性和类灵活性的增强,实现类的方便扩充,又增强了类的稳定性,java中的接口对程序语言的改进机制与delphi中的内在程序改良机制有什么区别,最好举出实例;
 
论坛怎么这么冷清,这么长时间,竟然无人问津!!!高手都上哪里了
 
没有热心人吗?
 
都来顶一顶吗,难道这个话题真的没有意义吗?
 
类是对具体事物的抽象,接口是对功能的抽象

比如车,你可以看成一个类,房子你也可以看成一个类,航天飞机与可以看成一个类。

而接口是对功能的抽象,比如说,开门。

你可以在“车”类里实现这个“开门”接口,你可以在“房子”类里实现这个“开门”接口,也可以在“航天飞机”类里实现这个“开门”接口。

你在具体程序中,你可能不知道你手里的类,到底是“车”还是“房子”还是“航天飞机”,但你用“开门”这个功能,就能把门打开。
 
再给你说个具体点的

比如你的程序要做一个 Log 功能要记录程序状态。但 Log 要保存的地方比较多,
可以是一个 Log 文件,可以只是显示在界面上,也可能是要加入系统日志,还可能要通过网络发送出去。
而且可能会经常改变
这时你可以定一个 loger 接口


ILoger = interface
procedure AddLoger(LogTime:TDateTime
text:string);
end;

而你可以用很多类来实现这个接口,如窗体
TfrmMain = class(TForm, ILoger)
....
end;

也可以是一个你自己定义的类

TMyClass = class(TObject, Iloger)
....
end;

也可以是别的,如
TFileLoger = class(TFileStream, ILoger)
...
end;

TMyNetClass = class(TMySocketClass, ILoger)
...
end;


使用时,就可以用 ILoger 接口直接操作了

var
log :ILoger;
begin
Log := Self
// 窗体
Log.AddLog(....);
...
Log := MyFileLoger;
Log.AddLog(....);

Log := MyNetClass;
Log.AddLog(...);


OK!
 
支持一下下!支持一下下!
 
看看李大嘴写的那本<<Inside VCL>>,里面有这方面的内容,讲得还不错.
 
多谢QSmile的参与,非常感谢,是不是说这样一来操作起来就更加方便明了了;因为我完全可以在每一个类中实现log方法,直接用类对象调用这些方法不就可以了,为什么还要绕道用接口机制来搞,是不是主要目的就是方便明了啊?先加20分
 
1. 因为你可以对不同类型,但同一接口的对象直接操作
2. 方便做成 DLL 把接口导出
 
QSmile 说的太好了,支持一下
 
后退
顶部