![]() |
Wo interface angeben bei virtual abstract?
Delphi-Quellcode:
Gegeben sei obiger Code. Nun meinte jemand, es wäre besser das Interface IBlub erst bei Ableitungen anzugeben die es auch implementieren (statt alles abstract).
type
IBlub = interface ['{986DD1F9-802B-4262-BBAD-10772F0844BC}'] procedure Bla; end; TBlubBase = class(TInterfacedObject, IBlub) procedure Bla(); virtual; abstract; end; TBlub1 = class(TBlubBase) procedure Bla(); override; end; TBlub2 = class(TBlubBase) procedure Bla(); override; end; Was meint Ihr? Falls auch warum? |
AW: Wo interface angeben bei virtual abstract?
Ich denke dass ist von Fall zu Fall unterschiedlich. Beides kann Sinn machen.
|
AW: Wo interface angeben bei virtual abstract?
Meine Meinung:
Wenn Du das Interface als Fähigkeit ansiehst, die die Klasse unterstützt (ein besserer Name wäre z.B. "ICanBlub"), wird klar, dass es egal ist, auf welcher Basis die Klasse aufgebaut wird. Sie muss eben nur die Fähigkeit haben. Also solltest Du die Klassen so aufbauen, wie es für Deine Klassenstrukturen günstig ist. Wie die Interface-Methoden genau implementiert werden ist völlig egal. |
AW: Wo interface angeben bei virtual abstract?
Eine abstrakte Methode sollte in einer abgeleiteten Klasse immer konkret implementiert werden. Insofern kann das Interface in der Basisklasse angegeben werden, da man davon ausgehen kann, dass die Methode immer aufgerufen werden kann.
Wenn man dies sicherstellen möchte oder die abstrakte Methode nicht in allen abgeleiteten Klassen benötigt und daher auch nicht implementiert, sollte man das Interface erst in den abgeleiteten Klassen hinzufügen. |
AW: Wo interface angeben bei virtual abstract?
oder mehrere in Interfaces aufteilen (voneinander abgeleitet oder nicht)
und dann ohne Abstract (und auch Virtual ist da nicht unbedingt nötig) das jeweilige Teil-Interface erst hinzufügen, wenn es diese Methode gibt. |
AW: Wo interface angeben bei virtual abstract?
Kathinka rulez :lol:
Danke für alle Antworten, insbesondere an Sebastian, dessen Antwort am ehesten meiner Frage entsprach. In dem konkreten Falle werde ich es wohl so lassen. Es geht da um Strategien die alle in der gleichen unit vorliegen wie auch die Fabrikklasse welche diese erzeugt. |
AW: Wo interface angeben bei virtual abstract?
Falls es sich hier um high performance Code handeln sollte - unbedingt
![]() |
AW: Wo interface angeben bei virtual abstract?
Danke für den Hinweis - interessant.
Ist bei uns soweit ich es einschätze nicht so releavnt. Anwender bekommen das Programm in Win64. Die Entwicklung geht soweit möglich in 32-Bit, da der Debugger in 64-Bit bei uns oft nicht funktioniert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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