Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Events in Interfaces – Best Practice? (https://www.delphipraxis.net/159248-events-interfaces-%96-best-practice.html)

Namenloser 19. Mär 2011 19:56

Delphi-Version: 2006

Events in Interfaces – Best Practice?
 
Hallo,
Ich habe hier ein Interface, das Events bereitstellen soll.

Normalerweise (bei Klassen) ist es ja üblich, bei Events einen „Sender“-Parameter mitzuliefern, das das auslösende Objekt angibt.

Wie macht man das gleiche am besten bei Interfaces? Übergibt man einfach wie gewohnt das Objekt? Das erscheint mir irgendwie als unsaubere Vermischung von Objekten Klassen und Interfaces. Das Interface „selbst“ kann man aber auch nicht übergeben, da das auslösende Objekt die Interface-Variable, die es referenziert, im Zweifelsfalle gar nicht kennt, zumal es mehrere geben kann. Man müsste also extra ein zusätzliches Interface erzeugen, das dann übergeben wird. Auch nicht optimal.

Wie löst ihr das? Ist es vielleicht schon ein Design-Fehler, überhaupt Events in Interfaces zu verwenden? Ich konnte im Internet nichts dazu finden...

Danke im Voraus

mkinzler 19. Mär 2011 20:02

AW: Events in Interfaces – Best Practice?
 
Wenn, schon das Objekt.
Btw. bei Klassen wird ja auch eine instanz und nicht die Klasse übergeben

Namenloser 19. Mär 2011 20:08

AW: Events in Interfaces – Best Practice?
 
Hab ich irgendwo etwas anderes behauptet?

mkinzler 19. Mär 2011 20:14

AW: Events in Interfaces – Best Practice?
 
Nein, aber du hattest deine Zweifel bezüglich der Vermischung genannt.
Ein Objekt ist eine Instanz einer Klasse und kann mehrere Interfaces implementieren.
Dann wäre es ja auch eine Vermischung von Klasse und Objekt.

Namenloser 19. Mär 2011 20:24

AW: Events in Interfaces – Best Practice?
 
Dann eben Vermischung von Klassen und Interfaces. Das ist aber wirklich Erbsenzählerei...

mkinzler 19. Mär 2011 20:26

AW: Events in Interfaces – Best Practice?
 
Du hast mich falsch verstanden. Wenn die Übergabe des Objektes in einem Interface eine Vermischung ware, wäre es auch eine bei einer Klasse

Namenloser 19. Mär 2011 20:37

AW: Events in Interfaces – Best Practice?
 
Delphi-Quellcode:
var
  Intf: IInterface;
begin
  Intf := TInterfacedObject.Create;
ist etwas anderes als
Delphi-Quellcode:
var
  Obj: TObject;
begin
  Obj := TInterfacedObject.Create;
Intf und Obj sind zwei unterschiedliche Typen.

Wenn ich jetzt bei einem Interface ein Event einführe, wäre es doch konsequent, dass Sender den Typ Interface hätte. Aber dazu müsste dann extra eine neue Interface-Instanz erzeugt werden, deshalb bin ich mir nicht sicher, ob das eine gute Lösung wäre.

Ein Problem ist z.B., dass ich so im Event-Handler ein Interface nicht identifizieren kann wie es bei Objekten möglich ist (
Delphi-Quellcode:
if Sender = Objekt1 then …
).


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz