Hallo,
im neuen Blogartikel "
Don't mix objects and interfaces" erläutert Dalija Prasnikar die Probleme die entstehen wenn Objekte und Interface vermischt werden.
Ihre Codebeispiel sind überraschend, denn wie hier in der
DP gelegentlich geschrieben wurde kann in Factorymethoden eine interne Instanz der Klasse erzeugt werden und am Ende eine Interfacereferenz zurückgegeben:
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;
Laut Blogartikel ist allerdings das
TmpFoo := TmpFoo.Create();
ein "huge no-no". Ist das Codebeispiel dennoch eine saubere Verwendung von Interfaces?