设计模式之单件模式 singleton

本文介绍了单例模式的基本概念及其实现方式,并提供了一个使用C++编写的单例模式示例代码。此模式确保了类仅有一个实例,并提供一个全局访问点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Singleton(单件)模式是一种很常用的设计模式。单件类在整个应用程序的生命周期中只能有一个实例存在,使用者通过一个全局的访问点来访问该实例。这是Singleton的两个最基本的特征。

单件模式 singleton C++ 实现:

Singleton.h
#ifndef SINAGLETON_H
#define SINAGLETON_H

//单件模式关
class SingletonClass{
protected:
	//construct
	SingletonClass();

	//destruct
	~SingletonClass();

public:
	//get instance
	static SingletonClass *Instance();
    
	//destroy instance
	static void Destory(void);

	//test function
	void DoSomething(void);

private:
	static SingletonClass * m_pcInstance;
};

#endif


Singleton.cpp
// Singleton.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Singleton.h"
#include <iostream>
#include <string>
using namespace std;

SingletonClass * SingletonClass::m_pcInstance = NULL;

//construct
SingletonClass::SingletonClass()
{
	//
}

//destruct
SingletonClass::~SingletonClass()
{
	Destory();
}

//get instance
SingletonClass *SingletonClass::Instance()
{
	if (NULL == m_pcInstance)
	{
		m_pcInstance = new SingletonClass();
	}

	return m_pcInstance;
}

//destroy instance
void SingletonClass::Destory()
{
	if (NULL != m_pcInstance)
	{
		delete m_pcInstance;
		m_pcInstance = NULL;
	}
}

void SingletonClass::DoSomething(void)
{
	//
}

int main(int argc, char* argv[])
{
	SingletonClass::Instance()->DoSomething();
	SingletonClass::Instance()->Destory();

	return 0;
}

上面的代码是没有采取互斥处理的,可以把采用临界区的方法实现,比较简单在此不详述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值