août
2010
Description
Dans une hiérarchie de classes, Tous les sous-classes héritent des méthodes implémentées dans la classe mère. Ces sous-classes pourraient redéfinir ces méthode pour les adapter et offrir des fonctionnalités différentes.
Quand on connaît exactement la fonctionnalité qu’on a besoin, on pourrait instancié directement la bonne classe dans la hierarchie des classes qui offre cette fonctionnalité.
Or,parfois on ne peut pas connaître auparavant quelle classe dans la hierarchie on aura besoin.
Le choix pourrait dépendre de plusieurs facteurs comme:
-L’état d’execution de l’application.
-Paramètres de configuration de l’application.
-prévision d’éventuel amélioration et évolution de l’application.
Dans ce cas, La conception normale consiste à implémenter un traitement de sélection de la bonne classe à instancier de la hierarchie de classe.
Ce type de design a plusieurs inconveniants:
-Chaque classe cliente qui va utiliser ce service est obligée d’implémenter le traitement de selection de la classe, et par conséquant nous aurons un couplage fort entre les objets de l’application et le service offert par cette hierachie de classe
-Si jamais le traitement de selection de la classe change, tous les objets de l’application qui utilise la hiérarchie doivent changer.
-Traitement lourd si jamais l’instanciation des sous-classes se fait différement et les facteurs de selection de la classe est plus compliqués.
-Les objets de l’application doivent connaître les services offerts par la hierarchie des classes.
Solution
Dans ce cas , le pattern Factory Method recommande l’encapsulation du traitement de la selection de la bonne classe dans une méthode d’ou le nom « Factory method » qui aura comme rôle :
-Selection de la classe appropriée à instanciée en se basant sur les facteurs influents.
-Instanciation la classe en question et la retourner comme instance de la classe mère.
En implémentant le Factory Method Pattern on bénéficie de plusieurs avantages:
-L’application pourra utiliser la « Factory method » pour accéder à la bonne instance de classe et cela élimine le faite que les objets d’application implémentent le traitement de selection de classe.
-« Factory method » cache toute la complexité du choix de la bonne classe à instancier.
-Puisque la « Factory method » retourne l’instance de la classe mère alors les objets d’application n’ont pas besoin de connaître l’exsistance de la hiérarchie de classe.
Exemple1
Exemple2