Welche Art der Initialisierung wird beim Modellieren von Klassen bevorzugt:
- Konstruktoren oder
- Fabrikmethoden
Und was wären die Überlegungen für die Verwendung von beiden?
In bestimmten Situationen bevorzuge ich eine Factory-Methode, die null zurückgibt, wenn das Objekt nicht erstellt werden kann. Dies macht den Code ordentlich. Ich kann einfach überprüfen, ob der zurückgegebene Wert nicht null ist, bevor ich eine alternative Aktion ausführe, im Gegensatz zum Auslösen einer Ausnahme vom Konstruktor. (Ich persönlich mag keine Ausnahmen)
Angenommen, ich habe einen Konstruktor für eine Klasse, der einen ID-Wert erwartet. Der Konstruktor verwendet diesen Wert, um die Klasse aus der Datenbank zu füllen. Wenn kein Datensatz mit der angegebenen ID vorhanden ist, löst der Konstruktor eine RecordNotFoundException aus. In diesem Fall muss ich die Konstruktion all dieser Klassen in einen try..catch-Block einschließen.
Im Gegensatz dazu kann ich für diese Klassen eine statische Factory-Methode verwenden, die null zurückgibt, wenn der Datensatz nicht gefunden wird.
Welcher Ansatz ist in diesem Fall besser, Konstruktor oder Fabrikmethode?