Les modèles de conception Singleton peuvent-ils renvoyer des références au lieu de pointeurs ?
L'approche conventionnelle en C pour créer un singleton consiste à renvoyer un pointeur vers l'instance instanciée. objet. Cependant, une technique alternative est proposée : renvoyer une référence à la place.
Cette approche semble logique car elle élimine la responsabilité de libérer manuellement l'objet singleton. La raison en est la difficulté de déterminer qui maintient une référence au singleton, ce qui rend imprudent toute tentative de désallocation manuelle.
L'emploi d'une méthode de fonction statique permet à la fois une initialisation paresseuse et garantit que l'objet est créé et détruit. une seule fois :
<code class="cpp">class S { public: static S& getInstance() { static S instance; return instance; } private: S() {} S(S const&); // Don't Implement. void operator=(S const&); // Don't implement };</code>
De plus, le constructeur doit être rendu privé et le constructeur de copie par défaut et l'opérateur d'affectation doivent être remplacés pour empêcher la copie et ainsi maintenir le propriété singleton.
Cependant, il est crucial de noter que cette technique peut ne pas assurer la sécurité des threads dans tous les scénarios. Dans de tels cas, envisagez les ressources suivantes :
N'oubliez pas d'évaluer soigneusement les raisons de l'utilisation d'un singleton pour vous en assurer est le choix de conception approprié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!