Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: gemischter Interface-/Objektzugriff

  Alt 24. Mai 2017, 09:47
Wenn beim Erzeugen des Objektes zusätzliche Methoden oder Properties angesprochen werden, braucht man dafür eigentlich kein zweites Interface.
Man muss nur klar abgrenzen, bis wo ohne Referenzzählung mit dem Objekt gearbeitet wird. Danach sollte das Objekt nicht mehr direkt referenziert werden.
Delphi-Quellcode:
type
  IFooItem = Interface
   ['{9995E78E-45DF-4C25-B657-7396738FEA70}']
    procedure Foo(const AValue);
  end;

  TFooItem = class(TinterfacedObject, IFooItem)
  public
    procedure Bar;
    procedure Foo(const AValue);
  end;

  TFooOwner = class
  private
    FItem: IFooItem
    function CreateItem: TFooItem;
    function GetItem: IFooItem;
  public
    property Item: IFooItem GetItem;
  end;

implementation

function TFooOwner.CreateItem: TFooItem;
begin
  Result := TFooItem.Create;
  Result.Bar;
end;

function TFooOwner.GetItem: IFooItem;
begin
  if not Assigned(FItem) then
    FItem := CreateItem; // Referenzzählung beginnt
 
  Result := FItem;
end;
  Mit Zitat antworten Zitat