Delphi-PRAXiS
Seite 2 von 2     12

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fluent Interface - keine Vererbung möglich? (https://www.delphipraxis.net/194212-fluent-interface-keine-vererbung-moeglich.html)

hschmid67 1. Nov 2017 20:09

AW: Fluent Interface - keine Vererbung möglich?
 
Hallo himitsu,

danke für diesen Tipp. Das ist durchaus zu überlegen und auf sowas wäre ich erstmal nicht gekommen :-)

Viele Grüße
Harald

Mavarik 1. Nov 2017 23:34

AW: Fluent Interface - keine Vererbung möglich?
 
Oder Du machst es so...:

Delphi-Quellcode:
TKlasseA = class
  function TuEtwas: TKlasseA;
end;

TKlasseB = class(TKlasseA)
  function ToEtwasAsB : TKlasseB;
  function TuEtwasAnderes: TKlasseB;
end;
Mavarik

DeddyH 2. Nov 2017 00:47

AW: Fluent Interface - keine Vererbung möglich?
 
Und dann? Nach dem ersten Aufruf von TuEtwas funktioniert das auch nicht mehr (zumindest ohne expliziten Typecast).

Uwe Raabe 2. Nov 2017 09:22

AW: Fluent Interface - keine Vererbung möglich?
 
Zitat:

Zitat von DeddyH (Beitrag 1384776)
Und dann? Nach dem ersten Aufruf von TuEtwas funktioniert das auch nicht mehr (zumindest ohne expliziten Typecast).

Um einen solchen Typecast zu machen, müsste man schon sicherstellen, daß die erhaltene Instanz auch vom richtigen Typ ist. Für den Fall, daß TuEtwas lediglich Self zurückgibt, ist das noch einfach. Allerdings braucht man dann auch keinen Typecast, sondern kann ebenfalls Self zurückgeben. In allen anderen Fällen ist das stark von der Implementation von TuEtwas abhängig. Insbesondere, wenn TuEtwas eine neue Instanz erzeugt, kann man nicht blind davon ausgehen, daß diese auch vom richtigen Typ ist.

In manchen Fällen wird man nicht drum herum kommen, die Funktionalität von TuEtwas zumindest leicht verändert nachzubilden. Dann kann man es aber auch gleich TuEtwas nennen und die geerbte, eigentlich nutzlose Methode gezielt verstecken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 2 von 2     12

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