設計模式是編程的重點,往往在面試時都會考查,而單例模式是最爲簡單、最爲常見、也最該掌握的模式。所以面試時對設計模式的考查考的最多的就是單例模式。
下面我們就來看看單例模式如何實現(C++代碼):
#include<iostream> using namespace std; class Singleton { public: static Singleton* Instance(); protected: Singleton(); private: static Singleton* _instance; }; Singleton* Singleton::_instance=0; Singleton::Singleton() { cout<<"Singleton..."<<endl; }; Singleton*Singleton::Instance() { if (_instance==0) { _instance=new Singleton(); } return _instance; } int main(int argc,char* argv[]) { Singleton* sgn=Singleton::Instance(); return 0; }其中,Singleton類型的構造函數必須是protected的,保證該類型不可被實例化,靜態成員函數Instance則用來實例化該類型,因爲該函數是靜態,所以每次調用都是同一個實例,這就保證了Singleton類型只能被實例化一次。