How To Use Interfaces
From Lazarus wiki
Jump to navigationJump to searchCopy the text below and it will demonstrate how to use Interfaces to write less code, avoid code repetition,..., this is a fully working program. The default interface in FPC is COM, which makes that once a class with an interface is instantiated as that interface it will automatically be released. Note if you change the interface type to CORBA it WILL leak.
program interfacesygenerics;
{$mode objfpc}{$H+}
type
ITestInterface = interface
['{3FB19775-F5FA-464C-B10C-D8137D742088}']
procedure DoSomething;
procedure DoItAll;
end;
TBaseObject = class(TInterfacedObject,ITestInterface)
procedure DoSomething;
procedure DoItAll;
end;
TderivedObect = class(TBaseObject)
end;
procedure TBaseObject.DoSomething;
begin
Writeln('TBaseObject DoSomething !');
end;
procedure TBaseObject.DoItAll;
begin
Writeln('TBaseObject DoItAll !');
end;
var
I: ITestInterface;
begin
Writeln('Using regular interfaces');
I := TderivedObect.Create as ITestInterface;
if I <> nil then
Writeln('Got interface OK. Calling it');
I.DoSomething;
I.DoItAll;
end.