TInterfaceList 사용하기
type
IDatabase = interface
function GetDatabaseName() : String;
end;
TDatabase = class(TInterfacedObject, IDatabase)
private
FDtabaseName : String;
public
procedure SetDatabaseName(ADatabaseName : String);
function GetDatabaseName() : String;
end;
{ TDatabase }
procedure TDatabase.SetDatabaseName(ADatabaseName : String);
begin
Self.FDtabaseName := ADatabaseName;
end;
function TDatabase.GetDatabaseName() : String;
begin
Result := Self.FDtabaseName;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
DatabaseList : TInterfaceList;
ADatabase : TDatabase;
InterfaceDatabase : IDatabase;
i : integer;
begin
DatabaseList := TInterfaceList.Create;
ADatabase := TDatabase.Create;
ADatabase.SetDatabaseName('Oracle');
InterfaceDatabase := ADatabase;
DatabaseList.Add(InterfaceDatabase);
ADatabase := TDatabase.Create;
ADatabase.SetDatabaseName('MsSQL');
InterfaceDatabase := ADatabase;
DatabaseList.Add(InterfaceDatabase);
for i :=0 to DatabaseList.Count-1 do begin
Memo1.Lines.Add(IDatabase(DatabaseList[i]).GetDatabaseName());
end;
end;