标签:饿汉式 http 存在 blog 懒汉 使用 构造函数 void code
/** * 创建型模式 单例模式 懒汉式 * GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。 * * 实现单例步骤常用步骤 * a) 构造函数私有化 * b) 提供一个全局的静态方法(全局访问点) * c) 在类中定义一个静态指针,指向本类的变量的静态变量指针 * */ #include <iostream> class Singelton { private: static Singelton * m_pls; Singelton() // 构造函数不是线程安全函数 { std::cout << "Singelton 构造函数执行" << std::endl; } public: static Singelton *getInstance() { if (m_pls == nullptr) // 只有在使用的时候,才去创建对象。 1 每次获取实例都要判断 2 多线程会有问题 { m_pls = new Singelton; } return m_pls; } static Singelton *FreeInstance() { if (m_pls != nullptr) { delete m_pls; m_pls = nullptr; } return m_pls; } }; Singelton * Singelton::m_pls = nullptr; void mytest() { Singelton * p1 = Singelton::getInstance(); Singelton * p2 = Singelton::getInstance(); if (p1 == p2) { std::cout << "是同一个对象" << std::endl; } else { std::cout << "不是同一个对象" << std::endl; } Singelton::FreeInstance(); return; } int main() { mytest(); system("pause"); return 0; }
/** * 创建型模式 单例模式 饿汉式 * GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。 * * 实现单例步骤常用步骤 * a) 构造函数私有化 * b) 提供一个全局的静态方法(全局访问点) * c) 在类中定义一个静态指针,指向本类的变量的静态变量指针 * */ #include <iostream> class Singelton { private: static Singelton * m_pls; Singelton() { std::cout << "Singelton 构造函数执行" << std::endl; } public: static Singelton *getInstance() { return m_pls; } static Singelton *FreeInstance() { if (m_pls != nullptr) { delete m_pls; m_pls = nullptr; } return m_pls; } }; // 饿汉式 // 不管你创建不创建实例,均把实例new出来 Singelton * Singelton::m_pls = new Singelton; void mytest() { Singelton * p1 = Singelton::getInstance(); Singelton * p2 = Singelton::getInstance(); if (p1 == p2) { std::cout << "是同一个对象" << std::endl; } else { std::cout << "不是同一个对象" << std::endl; } Singelton::FreeInstance(); return; } int main() { mytest(); system("pause"); return 0; }
标签:饿汉式 http 存在 blog 懒汉 使用 构造函数 void code
原文地址:http://www.cnblogs.com/lsgxeva/p/7773741.html