unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ComCtrls;
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 }
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function getCar:ICar; //æ¤å¤„å¯ç”¨åˆ«çš„æ–¹å¼æ¥å®žçŽ°èŽ·å–ICAR,如放在DLL文件ä¸ï¼›
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
{ 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.