Hallo,
man könnte die Registerprozeduren auf eine Klasse anstatt eine Methode definieren (z.B. TObjectList zur Verwaltung). TBase müsste dann Methode bereitstellen zur Informierung der Klasse sowie evtl. eine Methode für SollInformiert werden. Diese können ja in TBase abstract bleiben und in TSpecX implementiert werden.
PseudoCode:
Delphi-Quellcode:
//...
FMyList := TObjectList.Create(FALSE); // OwnsObjects auf false setzten
//...
TMain.RegisterBaseClass(ABase: TBase);
var
ind: Integer;
begin
ind := FMyList.IndexOf(ABase);
if ind <> -1 then
begin
FMyList.Add(ABase);
end;
end;
end;
TMain.UnregisterBaseClass(ABase: TBase);
var
ind: Integer;
begin
ind := FMyList.IndexOf(ABase);
if ind <> -1 then
begin
FMyList.Delete(ABase);
end;
end;
TMain.AlleInformieren;
var
i: Integer;
begin
for i := 0 to FMyList.Count -1 do
begin
base := TBase(FMyList[i]);
if base.SollInformiertWerden then
begin
base.Info(<Parameter>);
end;
end;
end;
Ungetestet
Gruß, Chris