Wenn Du mit Interfaces arbeitest solltest Du ab dem Moment nicht mehr mit der Klasse arbeiten.
Wenn Du z.B. eine Autoklasse hast:
TCar = class(TInterfacedObject, IEngine, IColor, IDriver)
dann kannst Du später eine Objekt als Interface verwenden:
Delphi-Quellcode:
var Intf: IIinterface;
Intf := TCar.Create;
Dieses kannst Du dann prüfen, ob es auch andere Interfaces implementiert:
Delphi-Quellcode:
var lColor: IColor;
lEngine: IEngine;
if Supports(Intf, IColor, lColor) then
lColor.Color := clRed;
if Supports(Intf, IEngine, lEngine) then
lEngine.Start;
Ab dem Moment kannst bzw. solltest Du nicht mehr mit der Klasse arbeiten. Jedenfalls nicht von außen auf diese zugreifen.
In Deinem Beispiel verstehe ich nicht wirklich, warum Du Summary als Interface ausführen willst. Das könnte doch auch einfach eine Klasse oder ein Record bleiben, der die Zählwerte sammelt.
In Interface bringt Vorteile,
- wenn Du Dich nicht mehr um die Freigabe des Objektes kümmern willst
oder
- wenn Du unterschiedliche (nicht voneinander abgeleitete) Klassen hast, die die gleichen Funktionalitäten implementieren sollen (also an bestimmten Stellen austauschbar sein müssen).
Du kannst ja mal schauen, ob Dir mein Tutorial etwas bringt:
http://www.delphipraxis.net/183702-i...-factorys.html
Die Videos vermutlich nicht, aber evtl. die Diskussion dort.