Lors de la modélisation de classes, quelle est la manière préférée d'initialiser :
- Constructeurs, ou
- Méthodes d'usine
Et quelles seraient les considérations à prendre en compte pour utiliser l'un ou l'autre ?
Dans certaines situations, je préfère avoir une méthode de fabrique qui renvoie null si l'objet ne peut pas être construit. Cela rend le code plus ordonné. Je peux simplement vérifier si la valeur renvoyée n'est pas nulle avant de prendre une autre mesure, contrairement à la levée d'une exception depuis le constructeur. (Personnellement, je n'aime pas les exceptions)
Disons que j'ai un constructeur sur une classe qui attend une valeur d'identification. 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 exception RecordNotFoundException. Dans ce cas, je devrai inclure la construction de toutes ces classes dans un bloc try..catch.
En revanche, je peux avoir une méthode d'usine statique sur ces classes qui retournera null si l'enregistrement n'est pas trouvé.
Quelle approche est la meilleure dans ce cas, le constructeur ou la méthode d'usine ?