LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
14 août 2007 à 03:04
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
14 août 2007 à 07:52
Salut à tous ...
Alors voilà mon soucis. Je dois dans une de mes classes utiliser le pattern Factory. Non pas que je sois un grand fan des motifs de conception, mais là, j'ai pas le choix ...
Du coup j'ai quelque chose comme ça :
$objInstance = Manager :: createInstance('blablabla');
A l'interiteur de la classe createInstance, bah je suis bien embêté ... En fait, j'ai trois choix :
1) Faire un gros switch/case :
function createInstance($strParameter)
{
switch($strParameter)
{
case 'blablabla' :
return new ClasseBlaBlaBla();
break;
case 'bliblibli :
return new ClasseBliBliBli();
break;
...
default :
throw new Exception('Non supporté ! ');
}
}
2) Faire utiliser les noms de classe dynamique :
function createInstance($strParameter)
L'avantage de la première solution, c'est qu'elle est rapide et propre, mais si un grand nombre de classe doit être pris en compte, alors ça devient un peu difficile à gérer.
La seconde et la troisième on l'avantage de pouvoir, moyennant quelques lignes de codes, de placer toutes les classes dont la génération doit être possibles et les inclure à la volée lorsqu'on en a besoin. Mais la seconde méthode est plutôt sale, et la troisième est extrêmement lente ...
Ma question est donc ... Qu'en pensez-vous ? Il est tard et j'ai pas creusé la question, mais je pense que je ne suis pas le seul à avoir eu ce problème ... Donc j'attends des réactions !
Merci !
LocalStone