设计模式----单件模式(c++)
单件模式是设计模式中最简单的模式了。
定义: 确保一个类只有一个实例,并提供一个全局的访问点。
- 把一个类设计成自己管理的一个单独实例,同时避免其他类再自行生成实例(所以构造函数用protect或privite)
- 也提供全局的访问点。public函数
看下代码的实现:
2 {
3 protected:
4 Singleton(){};
5 public:
6 ~Singleton(){};
7
8 static shared_ptr<Singleton> getInstance()
9 {
10 if (!pInstance_.get())
11 {
12 pInstance_ = shared_ptr<Singleton>(new Singleton());
13 return pInstance_;
14 }
15 }
16 private:
17 static shared_ptr<Singleton> pInstance_;
18 };
#include <QObject>template <typename T>
class ISingleton : public QObject
{
private:struct ObjectCreator{ObjectCreator() { ISingleton<T>::instance();}inline void do_nothing() const { }};static ObjectCreator objCreator_;protected:ISingleton(){};
public:static T & instance(){static T obj;objCreator_.do_nothing();return obj;}
};template <typename T>
typename ISingleton<T>::ObjectCreator ISingleton<T>::objCreator_;
此段代码从 boost的单件中修改而来。
当需要有一个新的单件类的时候,可以用如下方法:
class TcpCommandControl : public ISingleton<TcpCommandControl>
{Q_OBJECTpublic:~TcpCommandControl();void execute(shared_ptr<TcpRequestBase> req, shared_ptr<TcpResponseBase> resp);private:TcpCommandControl();friend class ISingleton<TcpCommandControl>;private slots:void responseReceiveSlot(QByteArray const& packet);private:shared_ptr<PacketTcpSocket> tcpSocket_;shared_ptr<TcpResponseBase> response_;
};
转载于:https://www.cnblogs.com/sld666666/archive/2011/05/27/2060256.html
设计模式----单件模式(c++)相关推荐
- NET中的设计模式---单件模式
如众所知,单件模式做为<Gof 23中设计模式>之一,其意图仅允许单件类的一个实例存在(扩展单件模式不在此文范围内),并提供全局的访问方法.UML类图如下. http://csharpin ...
- Java设计模式——单件模式
概述 有一些对象其实我们只需要一个,比方说:线程池(threadpool).缓存(cache).对话框.处理偏好设置和注册表(registry)的对象.日志对象,充当打印机.显卡等设备的驱动程序的对象 ...
- HeaFirst设计模式-单件模式[单例模式](Singleton Pattern)
深入分析单件模式 本次主要介绍的内容有 单件模式 单线程下的单件模式实现 多线程下实现单件模式出现的问题分析 JMM内存模型 多线程下的单件模式实现的三种方式 这些内容,可以从最根本理解单例模式的代码 ...
- 魔兽争霸之PHP设计模式-单件模式[Singleton]
前言:我写的关于设计模式的一系列文章.这系列的文章主要针对没接触过设计模式的,或者说接触过但还不是很明白的PHPer. 问题的提出: 可能很多人都写过类,文件操作的,数据库的-- 对于数据库的类来说有 ...
- C++设计模式——单件模式(singleton pattern)
一.原理讲解 由于单件模式也称为单例模式,分为懒汉式单例模式和饿汉式单例模式,两者主要区别是类对象的返回是在编译时创建?还是调用时才创建?其中,懒汉式单例模式是在程序调用时才创建,而饿汉式单例模式是在 ...
- 设计模式-单件模式(Singleton pattern)
模式描述:确保一个类只有一个实例,并提供访问这个实例的全局点. Code using System; using System.Collections.Generic; using System.Li ...
- .NET设计模式(2):单件模式(Singleton Pattern)
转载:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 单件模式(Singleton Pattern) --.NET设计模式系列之二 ...
- 设计模式之单件模式(Singleton Pattern)
一.单件模式是什么? 单件模式也被称为单例模式,它的作用说白了就是为了确保"该类的实例只有一个" 单件模式经常被用来管理资源敏感的对象,比如:数据库连接对象.注册表对象.线程池对象 ...
- C语言和设计模式(之单件模式)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过面试经验的朋友,或者对设计模式有点熟悉的朋友,都会对单件模式不陌生.对很多面试官而言,单件 ...
最新文章
- python gui编程框架添加工具栏_python gui编程,我是初学者。用tk,制作下拉菜单的command不分我想打开另一个界面。如和解决,求解!!...
- TensorFlow基本使用
- docker逃逸漏洞复现 cve-2019-5736
- android 增删改查 源码_学生信息增删改查小程序案例(springboot服务端)
- python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序
- Py之scikiti -survival:scikiti -survival库的简介、安装、使用方法之详细攻略
- maven nexus 说明
- 手机usb无法被电脑识别_6种方法解决电脑无法识别移动硬盘
- redis常用命令(高级篇)
- 后端+数据库(pycharm+mysql):使用 “flask”制作的调查量表/问卷
- CentOS 基础知识与命令总结
- Intel和AMD处理器各有什么特点?该如何选择?
- 矩阵相乘的理解(矩阵相乘的几何意义)及证明过程
- centos之dd命令
- 幼儿园计算机培训心得,幼儿园心得体会范文
- C语言输出整数部分和小数部分
- 秀日记:这个升学比例吓坏大家了
- 互联网业务数据分析- 数据分析基础
- ArcGisPro脚本工具【6】——湘源画的规划用地CAD带指标导入ArcGIS数据库
- STM32F4实现SD卡读写
热门文章
- Spring AOP 增强框架 Nepxion Matrix 详解
- 急我所需!机器学习、深度学习绘图模板.ppt
- 中国高校4篇研究今日同时登上Nature!清华北大上交浙工大等在列
- 奥巴马竟被「去马赛克 AI」洗白,CVPR 新研究惹上种族歧视大麻烦,LeCun 也被卷入其中...
- 33岁180程序员去相亲,被人嫌弃工资不够高,房子不是学区房,网友炸了!
- 清华博士宅家太无聊,给猫咪讲函数
- 11岁少女叫板支付宝!会写代码的孩子,到底多可怕?
- 年底送点福利,包邮送55本!Python、大数据、人工智能任你挑!
- 美多商城之用户中心(用户基本信息)
- javaweb_A service with the given Service Name is already installed on this machine.[【】删除服务】