Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: "Namespace" innerhalb einer Klasse

  Alt 3. Dez 2010, 18:18
Delphi-Quellcode:
TObjectAnimator = class
private
  FObj: TTheObject;
public
  constructor Create(Obj: TTheObject);
  procedure Animate();
end;

TObjectAnimatorHelper = class helper for TTheObject
public
  function Animator: TTheObject;
end;

function TObjectAnimatorHelper.Animator: TTheObject;
begin
  Result := ...;
end;

bezüglich der Speicherverwaltung;
- entweder TObjectAnimator als Interface
- eine globale Liste führen, wo alle Animatoren drin sind
- der Animator gibt sich selber frei, nachdem er verwendet wurde und man erstellt in .Animator: TTheObject; immer wieder einen Neuen (empfehle ich aber nicht)
- falls TTheObject von TComponent abgeleitet ist, dann könnt man dieses zum Owner von TObjectAnimator machen und beim Zugriff auf .Animator: TTheObject; wird entweder ein neuer Animator erstellt oder ein in TTheObject vorhandener TObjectAnimator genutzt
- oder man nutzt nur einen einzigen globalen TObjectAnimator, der von .Animator: TTheObject; zurückgegeben wird ... vor dessen Rausgabe wird dem TObjectAnimator noch gesagt, für welches TTheObject er als nächstes verantwortlich ist (hier muß man aber aufpassen, daß nicht mehrere Animatoren gleichzeitig aufgerufen werden, aber wenn man in dem Animator eine Verschachtelung nicht zuläßt, dann wäre es noch relativ ungefährlich)
$2B or not $2B
  Mit Zitat antworten Zitat