单件模式(Singleton)C++实现
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
实用性:1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它。
2.当这个唯一的实例应该是通过子类可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
效果: 1.只有一个实例,可以严格的控制客户怎样以及何时访问。
2.缩小名空间,避免了唯一实例的全局变量污染名空间。
3.可以控制对象的实例个数。
代码示例:这里类是一个人Micla,世界上仅有一个Mical,只能产生一个实例。
#ifndef _SINGLETON_
#define _SINGLETON_ class Mical{
public:
~Mical(){} static Mical* GetMical()
{
if(NULL == _mpMical)
{
_mpMical = new Mical;
static Delete Del;
}
return _mpMical;
} private:
static Mical* _mpMical; ////避免了不同情况实例化类对象
Mical(const Mical& another){}
Mical& operator = (const Mical& another){}
Mical(){} }; #endif
实现部分:
#include <iostream>
#include "Singleton.h" using namespace std;
Mical* Mical::_mpMical = NULL; int main()
{
Mical* pMical = Mical::GetMical();
delete Mical::GetMical();
return ;
}
用Mical* pMical = Mical::GetMical(); 实现了访问Micla 然后我们可以通过pMical访问Mical的各种属性(假设为:身高,性别等)
之后通过delete Mical::GetMical(); 删除对象。 但这样的删除容易被遗忘,因为new的过程是被封装起来的。
于是通过内嵌类实现自动delete:
#ifndef _SINGLETON_
#define _SINGLETON_ class Mical{
public:
~Mical(){} static Mical* GetMical()
{
if(NULL == _mpMical)
{
_mpMical = new Mical;
static Delete Del;
}
return _mpMical;
} private:
static Mical* _mpMical; ////避免了不同情况实例化类对象
Mical(const Mical& another){}
Mical& operator = (const Mical& another){}
Mical(){} class Delete{
public:
Delete(){}
~Delete(){delete _mpMical;}
};
}; #endif
这就实现了Singleton;
要注意的是 1.封死其他的实例化接口 2.对象删除问题处理
单件模式(Singleton)C++实现的更多相关文章
- 单件模式Singleton来控制窗体被重复或多次打开
本文转载:http://blog.csdn.net/a0700746/article/details/4473796 一般在百度搜一下,会出来一下内容,看来很好用.Singleton很方便的一个用处就 ...
- 设计模式 - 单件模式(singleton pattern) 具体解释
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/28595349 单件模式(singleton ...
- C#设计模式——单件模式(Singleton Pattern)
一.概述在软件开发过程中,我们有时候需要保证一个类仅有一个实例,比如在一个电脑用户下只能运行一个outlook实例.这时就需要用到单件模式.二.单件模式单件模式保证一个类仅有一个实例,并提供一个访问它 ...
- 设计模式(二)单件模式Singleton(创建型)
SINGLETON(单件)—对象创建型模式 几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关 ...
- [MyBean-说明书]关于插件的单件模式(singleton),插件的共享模式
[说明] 单件模式是一种用于确保整个应用程序中只有一个类实例. 想想我们的系统中有哪些方面可以应用到单件模式,比如大家常说的连接(ADOConnection)共享,其实就是指的单件模式. [MyBea ...
- 说说设计模式~单件模式(Singleton)
单件模式(Singleton)要求一个类有且仅有一个实例,并且提供了一个全局的访问点. 从概念上来研究一下它的实现,不考虑线程安全 1 public sealed class Singlton 2 { ...
- 设计模式----创建型型模式之单件模式(Singleton pattern)
单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点. 单件模式是比较简单且容易理解的一种设计模式.只有一个实例,通常的做法...TODO 类图比较简单,如下所示: 示例代码: 懒汉模式( ...
- 夜话JAVA设计模式之单例模式(单件模式Singleton)
单例模式也叫单件模式,就是确保一个类只有一个实例,并提供一个全局访问点. 设计成单例即把某个类设计成我们自己管理的单独实例,避免实例对象的重复创建,我们只有通过单例类的全局访问点获取实例. 下面来看金 ...
- 1.单件模式(Singleton Pattern)
意图:为了保证一个类仅有一个实例,并提供一个访问它的全局访问点. 1.简单实现(多线程有可能产生多个实例) public class CommonSigleton { /// <summary& ...
随机推荐
- AFNetworking源码解析-https证书相关
本篇说说安全相关的AFSecurityPolicy模块,AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题. HTTPS HTTPS连接建立过程 ...
- HTML input 控件
<input type="file" id="file1" onChange="test()"> function test() ...
- pycharm主题 变量颜色 自定义
File--Settings--Edtior--Color Schame-- Lanuage Defaults
- Crossing Rivers UVA - 12230 概率与期望
题目大意:有个人每天要去公司上班,每次会经过N条河,家和公司的距离为D,默认在陆地的速度为1,给出N条河的信息,包括起始坐标p,宽度L,以及船的速度v.船会往返在河的两岸,人到达河岸时,船的位置是随机 ...
- 《奋斗吧!菜鸟》 第八次作业:Alpha冲刺 Scrum meeting 4
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11012922.html 团队名称 奋斗吧!菜鸟 作业学习目标 A ...
- String去除重复字符两个方法
package cn.aresoft; import java.util.ArrayList;import java.util.List; public class TestBasic { publi ...
- HRBUST 1214 方格取数
方格取数 Time Limit: 1000ms Memory Limit: 65535KB This problem will be judged on HRBUST. Original ID: 12 ...
- orcale 基本查询(1)
orcale 基本查询 查询当前用户下的所有表: select * from tab; 查询表结构: desc 表名设置行宽: set linesize 120;设置列宽: 数值类型: col 列名 ...
- PHP5.5下安装配置EcShop
建议用较旧的PHP版本与EcShop搭配,比如PHP5.3,新版的PHP有很多奇奇怪怪的问题... 错误描述: Deprecated: preg_replace(): The /e modifier ...
- mysql优化 explain index
本文章属于转载,尊重原创:http://www.2cto.com/database/201501/369135.html 实验环境: 1.sql工具:Navicat 2.sql数据库,使用openst ...