2008-11-21 6 views
5

Einer der Mandanten von DDD besteht darin, dass Ihre Objekte nicht in einen ungültigen Zustand versetzt werden dürfen. Für mich bedeutet das, dass es keinen öffentlichen parameterlosen Konstruktor geben sollte, da dies in 99% der Fälle ein Objekt in einem ungültigen Zustand sein wird.DDD + öffentliche parameterlose Konstruktoren - sollten sie existieren?

Ist das ein guter Weg, vorwärts zu gehen? Es wird ein riesiger PITA, wenn Sie nur eine Klasse schnell neu lernen wollen.

Antwort

2

Gute Frage. Ich habe DDD Nazi-Freunde, die parameterlose Konstrukteure sagen, sind der Teufel. Dem stimme ich bis zu einem gewissen Grad zu, aber ich denke auch, dass es vom Zweck der Klasse abhängt.

2

Wie Kilhoffer sagte, hängt es davon ab, was Sie mit der Klasse zu tun versuchen. Unter welchen Umständen möchten Sie eine Klasse neu erstellen, ohne Eigenschaften tatsächlich zu initialisieren? Wenn Sie Instanzmethoden haben, die Sie aufrufen möchten und die keine Daten benötigen, können Sie diese Methoden entweder als statisch markieren oder die Methoden in eine separate Klasse verschieben. Es ist auch möglich, dass Ihre Klasse einen zusätzlichen gültigen Status hat - völlig leer.

Persönlich glaube ich an alles in Maßen. Wenn der PITA-Faktor hoch ist und Sie einigermaßen sicher sind, dass Sie keine Probleme bekommen, dann scheint es parameterlosen Konstrukteuren gut zu gehen. Irgendwann denke ich, es wird eine Frage der Meinung.

0

Es hängt alles davon ab, wer den Konstruktor aufruft. Wenn nur Ihre Fabriken dies tun, dann gibt es nicht wirklich ein Problem, weil Ihre Factory-Methoden die "domänenseitigen" Konstruktoren werden und die echten Konstruktoren ein Implementierungsdetail sind.