Namenloser hat das richtig dargestellt.
Die Factorymethode hat nur eine Aufgabe, das Interface-Objekt zu erstellen.
Das fertige Objekt als Interface zu verwenden, gehört nicht zu dieser Aufgabe.
Wenn das erfoderlich ist, sollte man in zwei Methoden trennen.
Delphi-Quellcode:
function CreateFoo: IFoo;
var
TmpFoo: TFoo;
begin
// Instanz der Klasse TmpFoo erzeugen, die von TInterfacedObject abgeleitet ist und IFoo implementiert
TmpFoo := TmpFoo.Create();
// diverse Properties setzen die nicht Teil des IFoo Interface sind
TempFoo.X := 1;
// ...
// Interface zurückgeben
Result := TmpFoo;
end;
function CreateAndInitFoo: IFoo;
begin
Result := CreateFoo;
DoSomethingWithFoo(Result);
end;