Henkk

导航

设计模式学习之----单例模式

 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;

 

posted on 2020-05-22 11:39  Henkk  阅读(104)  评论(0编辑  收藏  举报