J'ai appelé cela "Les designs patterns" mais j'aurai plutôt du appeler cela "entretien comique". Et oui tout commence avec un entretien. Face à moi une personne avec beaucoup d'expériences et un beau CV mais qui semble ancré dans le passé pantalon et veste velours d'un autre temps. La personne se dit sûr d'elle et me dit connaitre juste MVC en design pattern. Questionnement : vous devez bien en connaitre d'autres singleton et fabrique ( qui reste les plus connus ). Et là me dit oui il s'agit de réduire l'allocation mémoire :S Ok pour le singleton mais la fabrique est loin du compte.

Cela m'a questionné et je me suis dis qu'il était peut être utile de revenir sur ce patron au combien utile pour ceux qui souhaitent construire une application modulaire. L'exemple le plus connu est l'ouverture d'une connexion JDBC :

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", connectionProps);

DriverManager est justement une factory, elle va par l'appel à la méthode getConnection renvoyer en fonction de l'URL et des drivers chargés créer et renvoyer une instance de la classe fille de Connection. On aura ainsi si on attaque une base Oracle ou Sql Server pas la même instance d'objet mais comme elles héritent toutes de la classe Connection on va pouvoir les utiliser de manière indifférenciée.

Ce que nous venons de voir est bien l'utilisation la plus standard des fabriques. Il existe des dérivées dont une pour la gestion des pools qui va en plus d'instancier de manière masquée les objets en contrôlera aussi le nombre mais il ne s'agit pas du véritable patron "fabrique".

Si je dois conclure concernant cet entretien: avant de tenir tête à la personne en fasse mieux vaut tourner sept fois sa langue dans sa bouche et chercher à comprendre où elle veut en venir!

Quelques liens utiles :
http://gfx.developpez.com/tutoriel/conception/pattern/fabrique/

http://abrillant.developpez.com/tutoriel/java/design/pattern/introduction/