Question

Si on utilise une fonction d'autochargeur (avec spl_autoload_register), une nécessité plus:

  • singleton: toutes les classes nécessaires seront chargées par AutoLoader de toute façon, y compris la base de données, les journaux, le R & R, les fronts, etc. Donc, il est donc nécessaire que l'objet "toujours sur" n'est pas clair pour moi
  • usine: encore une fois, l'autoloadeur chargera la classe requise, il y a donc un point d'utilisation de la classe d'usine pour instantifier les classes de travailleurs implémentant l'interface ou l'extension de la classe abstraite
Était-ce utile?

La solution

Un singleton est utilisé pour contenir une seule instance d'une classe particulière, de sorte que chaque fois que l'instance est récupérée, elle sera toujours la même. Par conséquent, définir des données signifie que les données sont toujours les mêmes lors de la récupération.

Ceci est différent de la chargement automatique d'une classe, à chaque fois que vous créez une nouvelle instance, vous réinitialisez l'état à la valeur par défaut de la classe. Néanmoins, les singletons doivent être utilisés avec parcimonie, car elles sont essentiellement glorifiées des variables globales.

Un modèle d'usine doit être utilisé pour déléguer la détermination et la création d'objets. Il est utilisé lorsque vous ne souhaitez pas spécifier une classe concrète, mais nécessite une certaine sous-classe sous un ensemble de conditions. Vous ne pouvez pas transmettre les paramètres de construction à un automoduer et une logique complexe peut être nécessaire pour déterminer quel objet doit être renvoyé d'une usine, à nouveau, il n'atteint pas la même chose.

Un automoducteur doit simplement être utilisé pour trouver un fichier de classe et l'inclure. Cela ne devrait pas (et ne peut pas) faire de logique, comme instanciant un objet ou de prendre des décisions sur quel objet à charger.

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