设计模式学习之----单例模式
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 //懒汉式 7 class Singelton 8 { 9 public: 10 static Singelton* getInstance(); 11 ~Singelton(); 12 13 private: 14 Singelton(); 15 private: 16 static Singelton *m_psl; 17 pthread_mutex_t singleton::mutex; 18 }; 19 20 Singelton::Singelton() 21 { 22 } 23 24 Singelton::~Singelton() 25 { 26 if (m_psl != nullptr) 27 { 28 delete m_psl; 29 m_psl = nullptr; 30 } 31 } 32 33 Singelton* Singelton::getInstance() 34 { 35 if (m_psl == nullptr) 36 { 37 pthread_mutex_lock(&mutex); 38 if (m_psl == nullptr) 39 { 40 m_psl = new Singelton; 41 } 42 pthread_mutex_unlock(&mutex); 43 } 44 return m_psl; 45 } 46 47 Singelton* Singelton::m_psl = nullptr; 48 pthread_mutex_t Singelton::mutex; 49 50 //饿汉式 51 class Singelton 52 { 53 public: 54 static Singelton* getInstance(); 55 ~Singelton(); 56 57 private: 58 Singelton(); 59 private: 60 static Singelton *m_psl; 61 }; 62 63 Singelton::Singelton() 64 { 65 } 66 67 Singelton::~Singelton() 68 { 69 if (m_psl != nullptr) 70 { 71 delete m_psl; 72 m_psl = nullptr; 73 } 74 } 75 76 Singelton* Singelton::getInstance() 77 { 78 return m_psl; 79 } 80 81 Singelton *Singelton::m_psl = new Singelton;