AGB  ·  Datenschutz  ·  Impressum  







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

Generics und Enums

Ein Thema von bernau · begonnen am 9. Sep 2015 · letzter Beitrag vom 14. Sep 2015
 
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#17

AW: Generics und Enums

  Alt 12. Sep 2015, 12:24
Lies mal die von Günther verlinkte Diskussion, die behandelt das Thema nochmals.
Habe ich. Meiner Meinung nach wird hier mit Kanonenkugeln auf Spatzen geschossen.

Thema Stadtmusikanten:

Delphi-Quellcode:
TAnimal = (hund, katze, maus, affe, baer);
TAnimalSet = set of TAnimal;
TAnimalStadtMusikant = [hund, maus];
Wenn ich irgendwo ein Case habe, welches nur die Stadtmusikanten behandeln soll, dann schreibe ich folgendes.

Delphi-Quellcode:
if myAnimal in TAnimalStadtMusikant then
  begin
    case myAnimal of
      hund:TrittDenHund;
      maus:VerfuettereDieMaus;
    else
      MachException;
    end;
  end;
Nun wird TAnimal erweitert:

TAnimal = (hund, katze, maus, affe, baer, huhn); .

Der Code läuft, weil das neue Tier nichts mit den Stadtmusikanten zu tun hat.

Nun werden die Stadtmusikanten erweitert

TAnimalStadtMusikant = [hund, katze, maus]; Der Code wirft eine Exception.



Und nun dein Beispiel aus dem Thread;


Einfaches Beispiel: Pizza.
Delphi-Quellcode:
Type
  TPizza = (Margeritha, Funghi, QuatroStattione, MitWienerWurstUndSenf);

// Anstatt
Case Pizza of
  Margeritha: begin PackdieTomatesoßerauf; UndKäse; end;
  Funghi : begin PackdieTomatesoßerauf; Pilze; UndKäse; end;
  ...
...
  end;
//schreibt man
  PizzaFactory.CreateRecipe(Pizza).BelegDiePizza();
// Und dieser Code ändert sich dann niemals wieder.


Was spricht gegen:

Delphi-Quellcode:
type
  TPizzaToppics = (Tomatensosse, Kaese, Pilze, Salami, Pepperoni);
  TPizzaToppicsSet = set of TPizzaToppics;

const
  TPizzaBrot = [];
  TPizzaMargeritha = [Tomatensosse, Kaese];
  TPizzaFungi = [Tomatensosse, Kaese, Pilze];
  ...

Procedure TPizzaOfen.BelegDiePizza(TPizzaMargeritha);
Nun kannst du die So viele Pizzen zusammenstellen wie du willst. Alle Sorten stehen beisammen.

Der Code Selber muss nicht geändert werden. Ausser wenn neue Toppics hinzu kommen. Aber dann musst du auch bei dir den Code erweitern.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
 


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 18:25 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