AGB  ·  Datenschutz  ·  Impressum  







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

Schon wieder: Warum Interfaces II

Ein Thema von Benmik · begonnen am 22. Jun 2020 · letzter Beitrag vom 26. Jun 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Schon wieder: Warum Interfaces II

  Alt 22. Jun 2020, 14:25
JETZT geht es oft auch ohne sie, nachdem endlich, nach Jahrzehnten des Wartens, die Records erweitert wurden.

Im Grunde werden hier Interfaces "oft" nur dafür genutzt, damit Objekte automatisch freigegeben werden.
In den NextGen-Compilern ala Android und iOS, gab es mit dem ARC auch dafür schon blöde eine Lösung, da ALLE Delphi-Objekte wie Interfaces behandelt wurden,
und auch jetzt kann man mit den neuen Managed Records sowas überall im Delphi nutzen, also nun auch im Windows.


Persönlich hab ich oft versucht ohne Interfaces auszukommen, vor allem um die doppelte Deklaration und zusätzliche Zwischenebene loszuwerden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#2

AW: Schon wieder: Warum Interfaces II

  Alt 22. Jun 2020, 14:41
Persönlich hab ich oft versucht ohne Interfaces auszukommen, vor allem um die doppelte Deklaration und zusätzliche Zwischenebene loszuwerden.
Das ist es ja gerade, alles in den Interfaces muss ja in jedem Fall implementiert werden, also was bringt (hier) die Doppelarbeit?
Ja, die Referenzzählung. Aber das mache ich lieber selbst und das stört mich nicht. Bei der Referenzzählung gibt es auch Fallen, und dann kann man das gleich selbst erledigen.

Was das mit Managed Records zu tun hat, habe ich nicht verstanden. Warum nicht Klasse und gut ist?

Geändert von Benmik (22. Jun 2020 um 14:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: Schon wieder: Warum Interfaces II

  Alt 22. Jun 2020, 14:57
Auch wenn viele Delphi-Entwickler das zu glauben scheinen ist der primäre Zweck von Interfaces nicht die Referenzzählung, sondern die Abstraktion. Einer Klasse oder Routine, die ein bestimmtes Interface erwartet, sind die konkrete Implementation und der konkrete Typ völlig egal. Das bedeutet, dass für die Nutzung auch keine bestimmte Klassenhierarchie eingehalten werden muss, es kann jede beliebige Objektinstanz übergeben werden, sie muss lediglich das Interface implementieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Schon wieder: Warum Interfaces II

  Alt 22. Jun 2020, 15:14
@DeddyH: Ja, der primäre Zweck vom Erfinder, aber nicht der primäre Zweck warum es oft eingesetzt wird, denn da ist es oft nur die Referenzzählung,
und da kann man auch gut ohne auskommen.

Also wenn das Interface nur innerhalb einer Komponente steckt, nur der Referenzzählung dient und wo der Unterbau auch nicht austauschbar ist.


Zitat:
Diese Option hat man eben nur mit Interfaces.
Oder mit Objekten, wo der Vorfahre fliegen kann und durch überschreiben (override) verschiedene Ableitungen das dann anpasssen.
TStrings/TDataSet/TCollection/...

Interface: erst wird der Vogel erfunden und anschließend das Fliegen als Gemeinsamkeit zwischen den verschiedenen Tieren/Maschienen dann geteilt
Vererbung: erst erfindet man das Fliegen und baut daraus dann z.B. einen Vogel oder ein Flugzeug

Nur bei Mehrfachvererbung und bei nachträglichen Erweiterungen hapert es dann etwas: TLebewesen -> TLaufen -> TFliegen -> TVogel oder TFlugzeug
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Jun 2020 um 15:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Schon wieder: Warum Interfaces II

  Alt 22. Jun 2020, 14:59
Die nicht notwendige Freigabe ist ein (ggf.) positiver Effekt von Interfaces.
Der Nachteil ist die doppelte Deklaration (den möchte ich mit meinem UnitOptimizer abstellen, so dass das automatisiert gemacht wird).

Managed Records müssen nicht freigegeben werden. Wenn es nur um das Unterlassen der Freigabe geht, kann man jetzt diese benutzen.
Dann hat man allerdings nicht so etwas wie Vererbung.

Ein zweiter Wesentlicher Vorteil von Interfaces ist die Zuweisung von mehreren Interfaces zu einer Klasse.
Man kann also "Fähigkeiten" definieren, die von unterschiedlichen Klassen erfüllt werden können.
Alles, was "CanFly" unterstützt, kann man dann fliegen lassen. Egal ob Vogel, Biene oder Flugzeug.

Diese Option hat man eben nur mit Interfaces.

Ein Nachteil ist, dass sie deutlich langsamer sind und mehr Speicher brauchen als reine Objekte und Records.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 05:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz