1、何为单例模式?

  单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点(static)。可能有人会想这和全局变量有什么区别呢? 通常我们可以让一个全局成员变量使得一个对象被访问,但它不能仿真被多次对象实例化。一个最好的办法是,让类自身负责保存它的唯一实例。这个类要保证没有其他实例可以被创建,并且它可以提供一个访问该实例的公共接口。

在《大话设计模式》一书中,作者将单例模式比作计划生育,一个类只能实例化为一个对象,再形象不过了(P213)。

  下面给出了一段C++编写的Singleton类模板,详情出自http://shinh.skr.jp/template/singleton.html

/*
* File : TemplateSingleton.h
* Author: lqh
*/
#ifndef TEMPLATE_SINGLETON_H_
#define TEMPLATE_SINGLETON_H_ #include <cassert> template<class _T>
class Singleton {
public:
static _T* instance(); //supply the global access point
Singleton(); //prevent multiple instances
virtual ~Singleton(); protected:
static Singleton* _instance;
}; template<class _T>
_T* Singleton<_T>::instance() {
if (_instance == ) {
_instance = new _T;
}
return dynamic_cast<_T*>(_instance);
} template<class _T>
Singleton<_T>* Singleton<_T>::_instance = ; template<class _T>
Singleton<_T>::Singleton() {
assert(_instance == );
_instance = this;
} template<class _T>
Singleton<_T>::~Singleton() {
} #endif /* TEMPLATE_SINGLETON_H_ */

该单例模板类的使用方法如下所示:

/*
* File : singletonTest.cpp
* Author: lqh
*/
Class ConcreteSingleton : Public Singleton<ConcreteSingleton> {};
int main() {
ConcreteSingleton *cs1 = ConcreteSingleton::instance();
ConcreteSingleton *cs2 = ConcreteSingleton::instance();
assert(cs1 != );
assert(cs1 == cs2);
}

2、LTE系统级仿真中单例模式的应用

  • 生成小区、基站、用户等的ID
  • 工厂模式 (还不太明白)
  • 生成随机数类
  • 其他所有只需要一个实例化对象的类,如载波、带宽等等

【2014-05-06】C++ 设计模式----单例模式的更多相关文章

  1. ACM会议列表与介绍(2014/05/06)

    Conferences ACM SEACM Southeast Regional Conference ACM Southeast Regional Conference the oldest, co ...

  2. 设计模式 单例模式(Singleton) [ 转载2 ]

    设计模式 单例模式(Singleton) [ 转载2 ] @author java_my_life 单例模式的结构 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一实例. 单例类 ...

  3. 设计模式 单例模式(Singleton) [ 转载 ]

    设计模式 单例模式(Singleton) [ 转载 ] 转载请注明出处:http://cantellow.iteye.com/blog/838473 前言 懒汉:调用时才创建对象 饿汉:类初始化时就创 ...

  4. c#设计模式-单例模式(面试题)

    c#设计模式-单例模式 单例模式三种写法: 第一种最简单,但没有考虑线程安全,在多线程时可能会出问题, public class Singleton { private static Singleto ...

  5. java设计模式单例模式 ----懒汉式与饿汉式的区别

    常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...

  6. 最简单的设计模式——单例模式的演进和推荐写法(Java 版)

    前言 如下是之前总结的 C++ 版的:软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的. 概念不多说,没意思,我自己总结就是: ...

  7. ES6教程-字符串,函数的参数,了解函数的arguments对象,js面向对象,设计模式-单例模式,解构赋值

    前言 主要讲解了ES6对字符串的拓展,包括includes,startsWith和endsWith,另外增加了字符串模板. Start includes()是否包含 startsWith()以什么开头 ...

  8. Java设计模式の单例模式

    -------------------------------------------------- 目录 1.定义 2.常见的集中单例实现 a.饿汉式,线程安全 但效率比较低 b.单例模式的实现:饱 ...

  9. https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/

    w https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/ 1. Rob Allen. Zend Framework ...

  10. java设计模式——单例模式(一)

    一. 定义与类型 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 二. 适用场景 想确保任何情况下都绝对只用一个实例 三. 优缺点 优点: 在内存里只有一个实例,减少了内存开销 可以 ...

随机推荐

  1. Resolving SQL Server Disk IO bottlenecks

    网上看到这篇文章挺不错的,直接翻译过来.在尝试诊断SQL Server性能时,不要仅仅依赖某个单一的诊断数据,比如CPU的使用率.SQL Server磁盘性能,就得出结论却忽略的问题的根源.实际上,使 ...

  2. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  3. Lua学习笔记一

    学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章  开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...

  4. 前端安全配置之Content-Security-Policy(csp)

    什么是CSP CSP全称Content Security Policy ,可以直接翻译为内容安全策略,说白了,就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源( ...

  5. linux----------ab--性能测试工具

    ab.exe –n 10000 –c 100 localhost/index.php //其中-n代表请求数,-c代表并发数

  6. linux-----------shell的基础命令

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  7. hduoj 1455 && uva 243 E - Sticks

    http://acm.hdu.edu.cn/showproblem.php?pid=1455 http://uva.onlinejudge.org/index.php?option=com_onlin ...

  8. MFC打开系统关于对话框

    HICON Icon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); //IDR_MAINFRAME为图标的ID ...

  9. JSP中文乱码总结

    大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考.首先了解一下Java中文问题的由来: Java的内核和class文 ...

  10. h5视频上传之前端视频压缩研究

    今天领导接到一个h5上传手机视频的需求,主要是要看用户在这个视频中有没有完成某个任务,比如投篮进了几个球. 但是由于手机拍摄的视频文件大小有点大,直接上传的话,用户流量顶不住,而且特别耗时,在这样的情 ...