本篇博文我们来简单学习一下设计模式中最简单的一个模式——单例模式。单例模式我们将构造函数设计成私有化,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。此外,我们创建一个静态该类的指针,并且仅在静态函数中实例化一次。整个过程的实现就可以让无论多少次调用,类对象仅会构建一个。
它的优势主要以下几个方面:
① 控制资源的使用,通过线程同步来控制资源的并发访问;
② 控制实例产生的数量,达到节约资源的目的;
③ 作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的线程或者进程之间实现通信。
比如数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。
单例模式相对比较简单,我们直接看下面的C++程序:
class Singleton
{
public:
~Singleton()
{
if (singleton != nullptr)
{
delete singleton;
singleton = nullptr;
}
}
static Singleton* GetInstance() // 唯一接口来实例化类对象
{
if (singleton == nullptr)
singleton = new Singleton();// 仅会实例化一个对象
return singleton;
}
private:
static Singleton* singleton; // 静态类对象,类外需要初始化
Singleton() // 私有构造函数
{
}
};
Singleton* Singleton::singleton = nullptr; // 类外初始化
int main()
{
Singleton* item1 = Singleton::GetInstance();
Singleton* item2 = Singleton::GetInstance();
return 0;
}
以上是个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
转载请注明出处:http://blog.csdn.net/FX677588/article/details/76563255