Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: MVP richtig in Delphi implementieren?

  Alt 29. Apr 2012, 03:41
Ich wünschte, jedesmal, wenn irgendjemand nen Post schreibt, in dem DSharp vorkommt, bekomm ich ne PM oder so

Erstmal mein ehrliches tiefes Beileid, dass du Delphi 2010 nutzt. Dort DSharp (bzw allgemein Source mit Generics etc) zum Laufen zu bringen, ist auch für mich das eine oder andere Mal ein Graus.

Ich muss nochmal nachfragen: möchtest du "nur" eine Trennung von GUI und Businesslogik oder auch noch die Steuerung über einen DI Container?
Zweites gestaltet sich zugegebenermaßen nicht immer so einfach durch die Gegenspieler TComponent und IInterface (bzgl der Steuerung ihrer lifetime).

Ich gehe hier erstmal auf den ersten Punkt ein, da er imo einfacher zu realisieren ist. Ich würde hier eine Art MVVM ohne extra ViewModel benutzen. Also eine Klasse, die die "Geldaufteillogik" und die entsprechenden Properties: wie viele 1, 2, 5, 10 Euro und Gesamtbetrag beinhaltet.

Diese sind mit Bindings ganz einfach an dein View knüpfbar. So weit, so gut. Man kann nun die unterschiedlichen Beträge einstellen.

Die Visualisierung kannst du unterschiedlich gestalten. Eine Möglichkeit wäre ein extra ViewModel, in der du die Eigenschaften, die du visuell darstellen willst (rot markierte Controls, Warnsymbol, ausgegrauter OK Button, etc) extra definierst und sie bei Änderung der einzustellenden Properties (die Anzahl der Geldbeträge in dem Beispiel)

Eine andere Möglichkeit, wäre mit Bindings und ValueConvertern. Zum Beispiel ein negativer Betrag auf clRed oder ähnliches.


Ob du nun das ganze händisch zusammen baust oder über einen DI Container, ist die anschließende Entscheidung. Auch, inwieweit der DI Container genutzt wird. Dient er nur als Container für einige Teile oder wird er schon von Anwendungsstart (wie z.B. im ContactManager Beispiel von DSharp) an genutzt. Davon hängt nämlich dann ab, wie du mit der "TComponent vs Interfaces" Sache umgehst (hab gerade keinen Link, aber die Sache haben wir hier im Forum auch schonmal besprochen). Auch die Art und Weise, wie du dann View und (View)Model zusammen setzt, hängt davon ab.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat