Singleton 单例模板

 1 // singleton.h
 2
 3 #ifndef SINGLETON_H
 4 #define SINGLETON_H
 5
 6 // 单例基类模板
 7 template <class T>
 8 class Singleton
 9 {
10 public:
11     static T& give_me()
12     {
13         static T s_inst;
14         return s_inst;
15     }
16
17 private:
18     // 禁止实现拷贝构造与拷贝赋值函数
19     explicit Singleton(const Singleton<T> &rhs);
20     Singleton<T>& operator = (const Singleton<T> &rhs);
21
22 protected:
23     explicit Singleton()    {}
24     virtual ~Singleton()    {}
25 };
26
27 #endif // SINGLETON_H
 1 #ifndef TEST_MANAGER_H
 2 #define TEST_MANAGER_H
 3
 4 #include "singleton.h"
 5
 6 class TestManager : public Singleton<TestManager>
 7 {
 8     friend class Singleton<TestManager>;
 9
10 private:
11     explicit TestManager();
12     virtual ~TestManager();
13
14 public:
15     void func();
16 };
17
18 #endif // TEST_MANAGER_H
时间: 05-08

Singleton 单例模板的相关文章

Unity Singleton 单例类(Unity3D开发之二十)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/47335197 今天看到群里有朋友问unity单例的最佳实现方式,下面我我经常用的.贴出来供大家参考. 一.添加单例模板类 using UnityEngine; public class Singleton<T> : MonoBehaviour where T : MonoBehaviour { private

Singleton(单例)模式

Singleton(单例)模式用于确保某个类只有一个实例,并且为之提供一个全局访问点. Singleton模式适用情况: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时 在任何情况下,Singleton模式都建议我们提供能够访问单例对象的公有静态方法.如果使用这个方法创建一个对象,该方法将承担确保仅创建一个实例的责任. Singleton 定义一个Instance操作,允许客户访问它的唯一实例

分享一个线程安全的单例模板类

单例模式应该说是最简单的设计模式了.在此分享一个线程安全的单例模板类. template <typename Type> class CSingleton { public: static Type* GetInstance() { // kBeingCreatedMarker用来表示单例实例正在创建过程中. // 此处初始化为1是因为操作系统不会分配地址为1的指针. static const volatile intptr_t kBeingCreatedMarker = 1; // 如果m_

面试题集锦&amp;&amp;实现Singleton(单例)模式-JAVA版

题目:设计一个类,我们只能生产该类的一个实例.(来自<剑指Offer>) 解析:只能生产一个实例的类是实现Singleton(单例)模式的类型.由于设计模式在面向对象程序设计中起着举足轻重的作业,在面试过程中很多公司都喜欢问一些与设计模式相关的问题.在常用的模式中,Singleton是唯一一个能够用短短几十行代码完整实现的模式.因此,写一个Singleton的类型是一个很常见的面试题. 以下我们给出几种解法,供大家参考. *不好的解法一:只适用于单线程环境. 由于要求只能产生一个实例,因此我们

javascript设计模式-singleton(单例)模式

singleton(单例)模式被熟知的原因是因为它限制了类的实例化次数只能一次,单例模式,在该实例不存在的勤快下,可以通过一个方法创建一个类来实现创建类的新实例:如果实例已经存在,则会简单返回该对象的引用.单例模式不同于静态类(或对象),因为我们可以推迟它们的初始化,这通常是因为它需要一些信息,而这些信息在初始化期间可能无法获取,对于没有察觉到之前的引用代码,它们不会提供方便检索方法,这是因为它既不是对象,也不是由一个single返回的类,而是一个结构,在js中,singleton充当共享资源命

[java]设计模式之singleton(单例)

在日常工作中,有很多对象,我们只需要一个.比如:线程池, 缓存,注册表等.如果制造出多个实例,就会导致许多问题,如程序行为异常,资源使用过量等.这就需要对对象的构建进行控制,使其只能产生一个对象.这就是本篇要讲的设计模式--singleton(单例). 单例模式的定义:确保只有一个类只有一个实例,并提供一个全局访问点. 那么,要如何实现单例模式,使得一个类只能产生一个对象呢?请看下面的实现: public class Singleton { private static Singleton s;

Java设计模式:Singleton(单例)模式

概念定义 Singleton(单例)模式是指在程序运行期间, 某些类只实例化一次,创建一个全局唯一对象.因此,单例类只能有一个实例,且必须自己创建自己的这个唯一实例,并对外提供访问该实例的方式. 单例模式主要是为了避免创建多个实例造成的资源浪费,以及多个实例多次调用容易导致结果出现不一致等问题.例如,一个系统只能有一个窗口管理器或文件系统,一个程序只需要一份全局配置信息. 应用场景 资源共享的情况下,避免由于资源操作时导致的性能或损耗等.如缓存.日志对象.应用配置. 控制资源的情况下,方便资源之

从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解--备

关于 面向对象的设计模式 对于面向对象的设计模式,想必大家并不陌生吧. 纵观23种设计模式中,数单例模式(Singleton)和工厂模式(Factory Method)最为熟悉和基础吧.当然,本文总结Singleton模式,对于其他设计模式不做叙说. Singleton模式,即单例模式.顾名思义,主要用于做应用程序的资源共享控制.用途很多?? 实质为,单例是在程序声明周期里 有且仅有 被实例化过一次的类.为确保实例化的唯一,利用类的 类(static)方法来生成和访问对象. 至此,你便可以在程序

C++ Singleton (单例) 模式最优实现

参考:http://blog.yangyubo.com/2009/06/04/best-cpp-singleton-pattern/ 索引 静态化并不是单例 (Singleton) 模式 饿汉模式 懒汉模式 (堆栈-粗糙版) 懒汉模式 (局部静态变量-最佳版) 范例代码和注意事项 (最优实现) 扩展阅读 参考资料 我非常赞成合理的使用 设计模式 能让代码更容易理解和维护, 不过我自己除了简单的 单例 (Singleton) 模式 外, 其它都很少用 :-) 可耻的是, 直到前段时间拜读了 C++