2012-04-03 1 views
3

Ich habe ein Domänenmodell nach DDD-Methodik entwickelt. Ich möchte die Validierung hinzufügen.Validierung im Domänenmodell?

Haben Sie Validierung auf dem Domänenmodell Ebene denken Zugabe eine gute Idee ist? Falls nein, wo sollte ich meine Domain-Objekte validieren?

Dank

Antwort

8

Wenn die Validierungsregeln Teil der Business-Bereich bilden, gehören sie in das Modell.

Ein Aggregat Wurzel ist verantwortlich für die Aufrechterhaltung der von ihr umfassten Invarianten, so Validieren sie unter ihrer Verantwortung fällt.

Wenn Sie feststellen, dass die Validierungsregeln sehr komplex sind, können Sie einen Validierungsdienst erstellen, die für diese Funktion durch das Aggregat Wurzel verwendet werden.

+1

Danke für die schnelle Antwort. Wie Sie bereits gesagt haben, sollten Geschäftsregeln auf Domänenebene und allgemein durch die aggregierten Roots überprüft werden. Was ist mit den trivialen Validierungsregeln? Beispiel: Eine Customer-Entität hat einen Namen, der nicht null sein kann. Wo soll ich das überprüfen? –

+1

@MickaelMarrache - Ist das in Ihrem beschränkten Kontext eine Geschäftsregel? Ja? Dann gehört es in die Domäne. So etwas sollte wahrscheinlich von der Entität "Kunde" direkt erzwungen werden. – Oded

+1

Ich stimme zu, wenn Sie. Das Validieren von Geschäftsdomänenregeln gehört zur Geschäftsdomänenebene. Das Validieren von Benutzereingaben von einer GUI kann auch in der GUI direkt (aus Leistungsgründen) oder der Persistenzschicht gehandhabt werden. – Roland

2

Es hängt von der Art der Validierung ab, die Sie haben.

Wenn es nur, dass ein Kundenname erforderlich ist, und dass es eine maximale Länge für ein Feld, es ist dann nicht in der Verantwortung der Domain selbst. Dies sollte eine Eingabevalidierung sein.

Wenn Sie erstellen einen Webshop und der Auftrag ist ungültig, wenn nicht alle Artikel auf Lager sind, dann haben Sie einige echte Domain-Validierung.

Domain Driven Design 101 hat einige schöne Beispiele auf Schlitten starten 44.