Pourquoi la classe Java modèle utilise une méthode de fabrication plutôt que constructeur?

StackOverflow https://stackoverflow.com/questions/855518

  •  21-08-2019
  •  | 
  •  

Question

Il y a une bonne discussion de ce dans le cas général .

Cependant, je me demandais précisément pourquoi le Pattern classe utilise compile méthode statique pour créer un objet, plutôt que le constructeur?

Il me semble être plus intuitif à utiliser un constructeur.

Était-ce utile?

La solution

La classe modèle est plus récent que beaucoup de choses dans le JDK. À ce titre, je crois qu'ils ont adopté l'approche plus moderne de l'utilisation de méthodes d'usine plutôt que l'ancienne approche des constructeurs publics. Vous ne pouvez pas vraiment moderniser les méthodes d'usine aux classes existantes.

D'une manière générale, il n'y a pas beaucoup de raison d'utiliser un constructeur sur une méthode d'usine, je pense que tout y était à elle. méthodes d'usine permettent la création d'objet abstrait, qui peut être très utile.

Autres conseils

Pourquoi vous deux instance de la Pattern même regex? Une méthode de création statique permet des implémentations de cache potentiellement s retournent parfois compile le même objet si la même regex est demandé à plusieurs reprises. S peut Compiler être <=> cher. De plus, si les méthodes supplémentaires sont devenues nécessaires <=> (dire syntaxes différentes), ils pourraient donner des noms différents au lieu d'un ensemble de constructeurs surchargés de prêter à confusion.

Le modèle d'usine statique est utilisée quand il y a une bonne chance que la mise en œuvre sous-jacente peut être modifiée d'une manière qui pourrait affecter le constructeur. En bref, l'usine permet une flexibilité importante pour le mainteneur de la bibliothèque sans être lié par la compatibilité binaire et source sur le côté de la construction.

Voir http://en.wikipedia.org/wiki/Factory_method_pattern pour plus de détails - en particulier la section «Autres avantages et variantes.

En utilisant une méthode de fabrication pour aussi pourrait éventuellement Pattern permettre l'utilisation d'un plug-in de mise en œuvre regex 3ème partie. Malheureusement, Sun n'a pas mis en œuvre aucune des fonctionnalités que vous pourriez obtenir en utilisant une méthode de fabrication (plug-in capacité, la mise en cache).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top