AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Events in Interfaces – Best Practice?

Ein Thema von Namenloser · begonnen am 19. Mär 2011 · letzter Beitrag vom 19. Mär 2011
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 20:56
Delphi-Version: 2006
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

Geändert von Namenloser (19. Mär 2011 um 21:26 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:02
Wenn, schon das Objekt.
Btw. bei Klassen wird ja auch eine instanz und nicht die Klasse übergeben
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:08
Hab ich irgendwo etwas anderes behauptet?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:14
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:24
Dann eben Vermischung von Klassen und Interfaces. Das ist aber wirklich Erbsenzählerei...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:26
Du hast mich falsch verstanden. Wenn die Übergabe des Objektes in einem Interface eine Vermischung ware, wäre es auch eine bei einer Klasse
Markus Kinzler
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Events in Interfaces – Best Practice?

  Alt 19. Mär 2011, 21:37
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 (if Sender = Objekt1 then ).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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