Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Vererbung, Aggregation, Assoziation?

  Alt 4. Jun 2007, 15:57
Bitte, bitte, mit Zucker oben drauf...
... sage nicht, euer Info-Lehrer hat sich solch einen Bratzen ausgedacht...

Assoziation kommt dort praktisch nicht vor, weil du Modell in eine globale Variable schreibst.
Das ist so wie es da geschrieben ist, absolut falsch.
Du kannst nicht im Konstruktor von TView für jede Instanz eine globale Variable besetzen, die eine globale Variable bedeutet, dass bei der nächsten Instanz von TView, dort eine neue Instanz drin steht.
Somit würden pötzlich beide neuen Views mit dem gleichen neuen Modell arbeiten und die alte Modell-Instanz ist ein Speicherleck!

Es macht auch maximal im Document/View Pattern Sinn das Modell mit/von dem View zu erzegen.
Normalerweise will man ja möglichst austauschbare Views für das gleiche Modell haben, right?

Hier kommen wir zur ersten Assoziation:
Du könntest TView eine öffentliche Eigenschaft "Modell" geben.
Wenn man nun einen View anlegt, kann man ihm dann die Daten zuweisen, es können also auch 2 Views auf den gleichen Daten arbeiten, wenn erwünscht.
Der View ist ja nicht dein Programm, er implementiert ja nur begrenzt Logik (nur die, die direkt mit User-interaktionen zusammenhängen also keine Geschäftslogik darstellen) er sollte also mit einer bestehenden Instanz des Modells arbeiten, es aber weder anlegen noch vernichten.
Das widerspräche der ganzen Idee hinter MVP oder MVC: nämlich Austauschbarkeit & Fokus auf Teilaufgaben.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat