网络中关于Delphi中Interface的作用

明生KISS ps:很多时都会使用到接口模式所以做个备注  

个人认为引入Interface的主要作用是有利于软件的升级维护,避免模块的耦合,而不是某些人认为的为了实现多重继承。

 

以下是一个网上的小例子:

 

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 ;

 

此项目被张贴在未分类 。书签的 permalink

发表评论

电子邮件地址不会被公开。 必填项已用*标注