Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   MVC -- Daten-Validierung, komplexe Models und deren Darstellung (https://www.delphipraxis.net/163819-mvc-daten-validierung-komplexe-models-und-deren-darstellung.html)

Stevie 17. Okt 2011 22:20

AW: MVC -- Daten-Validierung, komplexe Models und deren Darstellung
 
Ich geh mal auf DSharp ein:

Es gibt ja unterschiedliche Arten von Validierung, formale (im Sinne von, Name muss mindestens 3 Zeichen lang sein), inhaltliche (Postleitzahl muss gültig sein) und komplexe (wenn ich als Zahlungsmethode Visa auswähle müssen die Kreditkarten Daten stimmen). Die ersten beiden können noch vom Binding selber abgeprüft werden, indem man ne ValidationRule angibt. Komplexe (und teilweise auch inhaltliche) müssen in der Regel vom Viewmodel (ich bleib hier mal MVVM Pattern) durchgeführt werden, weil dort die unterschiedlichen Eigenschaften zusammen kommen, die für eine Validierung notwendig sind.

Das alles ist ohne weiteres möglich (Demo zu einigen unterschiedlichen Validierungsmöglichkeiten gibts im repository). Bei allen Arten der Validierung wird aber auf jeden Fall verhindert, dass irgendwelche nicht validierten Werte in das Viewmodel (und damit ins Model) gelangen (außer du machst es explizit durch den Aufruf der UpdateSource Methode).

Ziel der ganzen Übung ist es ja, die Oberfläche so dumm wie möglich zu gestalten, so dass sie nur als User Interface dient und jegliche Logik in der Schicht darunter steckt. Somit kannst du letzlich ganze Funktionstests automatisiert durchführen (und ich rede nicht von Dingen wie TestComplete oder so) ohne die GUI zu benötigen.

Bei Fragen zu DSharp direkt oder generell zu verwandten Themen steh ich auch gern per PM zur Verfügung.

@Roter Kasten: Memento unterstützt DSharp auch, es gibt eine Basis ViewModel Klasse, in der das direkt implementiert ist.

webcss 18. Okt 2011 06:01

AW: MVC -- Daten-Validierung, komplexe Models und deren Darstellung
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1130961)
Das ist mir ja eben bewusst. Mir ist aber auch bewusst, dass ich entscheidende Dinge einfach noch nicht weiß, und ich denke, dass es hier vielen so geht
....
Was mir nur häufig fehlt ist eben ein konkretes Programmierbeispiel bzw. eigentlich Beispiele, da man ein Pattern ja auf mehrere Arten und Weisen interpretieren und umsetzen kann. Daher bin ich auch gerne offen für Code, über den diskutiert werden kann :)

Kenne ich und ist sehr blöd. Es gibt viele Seiten zu dem Thema, allerdings wenige für Delphi. Einige, die mir geholfen haben:
sourcemaking.com/design_patterns
building-a-composite-application-framework.aspx
model-view-presenter-mvp-design-pattern-close-look-part-2-passive-view.aspx

Zitat:

Zitat von s.h.a.r.k (Beitrag 1130961)
Danke für den Hinweis auf das Pattern -- kannte das noch nicht ;)

Ist z.B. auch in der unit classes vorhanden. TMemento implementiert dieses Verhalten für TPersistent (Nachfahren).

Stevie 18. Okt 2011 07:10

AW: MVC -- Daten-Validierung, komplexe Models und deren Darstellung
 
Zitat:

Zitat von webcss (Beitrag 1130980)
Zitat:

Zitat von s.h.a.r.k (Beitrag 1130961)
Danke für den Hinweis auf das Pattern -- kannte das noch nicht ;)

Ist z.B. auch in der unit classes vorhanden. TMemento implementiert dieses Verhalten für TPersistent (Nachfahren).

Kann es sein, dass du TRecall meinst? Von TMemento hab ich noch nie was gehört (und ist auch nirgendwo im Delphi Source vorhanden)

webcss 18. Okt 2011 07:17

AW: MVC -- Daten-Validierung, komplexe Models und deren Darstellung
 
Zitat:

Zitat von Stevie (Beitrag 1130982)
Kann es sein, dass du TRecall meinst? Von TMemento hab ich noch nie was gehört (und ist auch nirgendwo im Delphi Source vorhanden)

Uuups, ja genau, ich meine natürlich TRecall... :oops:

mquadrat 18. Okt 2011 09:22

AW: MVC -- Daten-Validierung, komplexe Models und deren Darstellung
 
Die Validierung lässt sich selten eindeutig zuordnen. Im Web - wo man nicht mal eben dem Model oder dem Controller sagen kann, dass jemand ein Zeichen eingetippt hat - wird die Validierung meist direkt im View vorgenommen.

Wenn man keine Bindings benutzt würde ich in Delphi den selben weg gehen. Also entweder eine Klasse, die sich an die entsprechenden Events der Controls anhängt oder eben die Controls erweitern / dekorieren. Mit Bindings die simplen Validierungen in den Bindings und die komplexen im Modell. Validierung der komplexen Bedingungen im View-Model könnte daran scheitern, dass nicht alle der benötigten Informationen public sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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