Was ist das Singleton-Muster?
Stellt sicher, dass eine Klasse nur eine Instanz hat und stellt einen globalen Zugriffspunkt darauf bereit. [DP]
Lassen Sie die Klasse selbst für das Speichern ihrer einzigen Instanz verantwortlich sein. Diese Klasse garantiert, dass keine andere Instanz erstellt werden kann, und diese Klasse kann eine Methode für den Zugriff auf die Instanz bereitstellen. 【DP】
Wann wird der Singleton-Modus benötigt?
Das Programm benötigt nur eine Methode zur Steuerung einer bestimmten Funktion und darf keine zweite Funktion erstellen. Zum Beispiel: der Zahlenprüfer der Banken.
Um den Singleton-Modus verwenden zu können, müssen Sie die Verwendung des C++-Schlüsselworts „static“ verstehen. Dieser Blog-Beitrag von mir analysiert kurz den statischen Testfall:
[code]int main(){ //单例模式初始化两个实例的方法 Singleton *s1 = Singleton::getInstance(); Singleton *s2 = Singleton::getInstance(); if(s1 == s2) std::cout << "Two the objects are the same instance.\n"; else std::cout << "Two the objects are the different instance.\n"; return 0; }
[code]class Singleton{ private: //将构造函数声明为私有的,从而保证只允许类内使用 Singleton(){} //声明一个类的静态对象(类外初始化) static Singleton *instance; public: //静态成员方法,提供一个访问仅有实例的全局访问点。即提供接口创建对象 static Singleton* getInstance(){ if(instance != NULL){ instance = new Singleton; } return instance; } }; //类外部初始化静态成员变量(静态成员变量必须被初始化) Singleton* Singleton::instance = NULL;
[code]class Singleton{ private: //将构造函数声明为私有的,从而保证只允许类内使用 Singleton(){} //声明一个类的静态对象(类外初始化) static Singleton *instance; public: //静态成员方法,提供一个访问仅有实例的全局访问点。即提供接口创建对象 static Singleton* getInstance(){ if(instance != NULL){ lock(syncObj){ if(instance != NULL){ instance = new Singleton; }//if }//lock }//if return instance; } }; //类外部初始化静态成员变量(静态成员变量必须被初始化) Singleton* Singleton::instance = NULL;
Das Obige ist der Inhalt einer kurzen Einführung in den Singleton-Modus in C++-Entwurfsmustern. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!