unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
//
定义接口
如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件;
ICar = interface (IInterface)
['{ED52E264-6683-11D7-B847-001060806215}']
procedure drive;
end;
//
接口实现类
1
,一定要加入
TinterfacedObject
才能使用;
TCar = class(TInterfacedObject,ICar)
public
procedure drive;
end;
//
接口实现类
2
,一定要加入
TinterfacedObject
才能使用;
THouseCar = class(TInterfacedObject,ICar)
public
procedure drive;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function getCar:ICar; //
此处可用别的方式来实现获取
ICAR
,如放在
DLL
文件中;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TCar }
procedure
TCar.drive;
begin
ShowMessage('TCar.drive');
end
;
{ THouseCar }
procedure
THouseCar.drive;
begin
ShowMessage('THouseCar.drive');
end
;
procedure
TForm1.Button1Click(Sender: TObject);
var
s:ICar;
begin
s:= getCar;
s.drive;
end
;
function
TForm1.getCar:ICar;
begin
Result:=THouseCar.Create; //
此处为整个实现的关键点;
//
或
Result:=TCar.Create;
end
;
end
.