Lors de la modélisation de classes, quelle est la méthode d'initialisation préférée:
- Constructeurs, ou
- Méthodes d'usine
Et quelles seraient les considérations pour utiliser l'un ou l'autre?
Dans certaines situations, je préfère avoir une méthode de fabrique qui retourne null si l'objet ne peut pas être construit. Cela rend le code soigné. Je peux simplement vérifier si la valeur retournée n'est pas nulle avant de prendre une action alternative, contrairement à la levée d'une exception du constructeur. (Personnellement, je n'aime pas les exceptions)
Dites, j'ai un constructeur sur une classe qui attend une valeur id. Le constructeur utilise cette valeur pour remplir la classe à partir de la base de données. Dans le cas où un enregistrement avec l'ID spécifié n'existe pas, le constructeur lève une RecordNotFoundException. Dans ce cas, je devrai inclure la construction de toutes ces classes dans un bloc try..catch.
Contrairement à cela, je peux avoir une méthode de fabrique statique sur ces classes qui renverra null si l'enregistrement n'est pas trouvé.
Quelle approche est la meilleure dans ce cas, méthode constructeur ou méthode d'usine?