#ifndef _SINGLETONT_H_
#define _SINGLETONT_H_
#include <cassert>
#define NULL 0
/*
*此为单件模板类,所有需要单件功能的类可以继承此模板类,
*并重写getSingleton(),getSingletonPtr()和相应的copy,operator=()
*从而实现单件的功能。
*/
template <typename T>
class SingletonT
{
public:
/*模板Singleton类的构造函数,由于断言和静态ms_singleton的存在,
*所以只能实例化一个Singleton
*再次实例化时会被断言阻止输出错误信息
*/
SingletonT()
{
assert(!ms_singleton);
//ms_singleton用来跟踪子类实例对象的跟踪
ms_singleton = static_cast< T* >(this);
}
~SingletonT()
{
assert(ms_singleton);
ms_singleton = 0;
}
//获得子类的唯一实例对象
static T& getSingleton()
{
assert(ms_singleton);
if (ms_singleton == NULL)
{
ms_singleton = new T;
}
return (*ms_singleton);
}
//获得子类的唯一实例对象的指针
static T* getSingletonPtr()
{
if (ms_singleton == NULL)
{
ms_singleton = new T;
}
return ms_singleton;
}
protected:
//ms_singleton为全局唯一存在的实例对象
static T* ms_singleton;
private:
/*
*将copy和operator=声明为私有,即外界不能通过这2中途径进行实例化
*/
SingletonT(const SingletonT<T>&);
SingletonT& operator=(const SingletonT<T>&);
};
#endif
需要使用单件的类继承SingletonT类,并在其实现文件中初始化
class CameraSystem : public SingletonT<CameraSystem>
template<> CameraSystem* SingletonT<CameraSystem>::ms_singleton = 0;
分享到:
相关推荐
"设计模式-单件模式" 单件模式是指确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的程序设计方法。单件模式是一种非常实用的设计模式,它可以控制一个类的实例数量,使得调用者可以从...
单件模式(Singleton Pattern)是设计模式中的一种,它的核心意图是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,这样的设计模式能够有效地控制资源的使用,限制实例的数量,以及协调对象间的交互...
单件模式(Singleton Pattern)是设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在软件开发中被广泛应用,比如配置管理、数据库连接池、日志服务等场景,需要确保全系统...
单件模式(Singleton Pattern)是设计模式中的一种结构型模式,它的主要目的是保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于系统中需要频繁创建和销毁的对象,例如日志服务、线程池、数据库连接等...
单件模式(Singleton Pattern)是设计模式中的一种结构型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在C#编程中,单例模式被广泛应用于那些需要频繁创建和销毁的对象,比如线程池、数据库...
单件模式(Singleton Pattern)是软件设计模式中的一种基础模式,它确保一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式的实现有多种方式,包括懒汉式、饿汉式以及线程安全的实现。下面我们将详细讨论...
模式 很好的例子模式 很好的例子模式 很好的例子模式 很好的例子模式 很好的例子设计模式的一 种单件 模式 很好的例子
单件模式(Singleton Pattern)是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++编程中,单件模式通常用于管理共享资源,比如日志系统,因为它需要在整个应用程序中被多个组件访问,...
尽管文件列表中提到了`MySQL`,但在“数据库连接-单件模式”的主题下,我们通常讨论的是如何在SQL Server环境下应用单例模式。不过,单例模式的概念和实现方式在MySQL或其他数据库系统中也是类似的,只是具体的...
工厂方法和单件模式结合示例DEMO,语言C#.
用c++实现的单件模式 单一头文件 直接继承可用
单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解
这份文档以例子的形式讲诉了设计模式之单件模式,希望可以帮助学习的人!
### 深入浅出设计模式之单件模式 #### 一、单件模式概述 单件模式(Singleton Pattern)是软件设计模式中最为常见的一种,它的主要目标是确保某个类只有一个实例,并提供一个全局访问点。单件模式在很多情况下都...
单件模式(Single Pattern),C#的实现代码。根据不同需求的5种实现方式。
单件模式实例,有极大的参考价值
C#作为.NET框架的主要编程语言,广泛应用于各种复杂系统开发,其中单件模式(Singleton Pattern)是C#开发者经常会遇到的一种设计模式。本资源旨在帮助初学者理解并应用单件模式,通过关键代码实例,让你快速掌握这...
### 设计模式——工厂模式与单例模式 #### 一、引言 设计模式是软件工程领域中的一个重要概念,它代表了在特定情况下解决常见问题的最佳实践。在本篇文章中,我们将深入探讨两种广泛使用的软件设计模式:工厂模式...
单件模式(Singleton Pattern)是软件设计模式中最基础且常用的一种模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要控制实例化过程或者资源管理的场景中尤其适用,例如日志服务...