设计模式--单例模式
2016-01-20 14:15
239 查看
概述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
示例如下(非线程安全的,如果是多线程的单例模式需要加锁控制):
#include<iostream>
using namespacestd;
//单例类的声明
class Singelton
{
private:
//构造函数私有,外部无法调用
Singelton(){}
//静态类对象指针
static Singelton* singel;
public:
//提供给外部的构造本类对象的接口(全局访问点)
static Singelton* GetInstance();
};
//静态成员类外初始化
Singelton* Singelton::singel = NULL;
//获取类对象接口实现
Singelton* Singelton::GetInstance()
{
if(singel== NULL)
{
singel = new Singelton();
}
return singel;
}
测试程序:
int main()
{
Singelton* p1=Singelton::GetInstance();
Singelton* p2=Singelton::GetInstance();
if(p1 ==p2)
cout<<"ok"<<endl;
else
cout<<"no"<<endl;
return 0;
}
示例如下(非线程安全的,如果是多线程的单例模式需要加锁控制):
#include<iostream>
using namespacestd;
//单例类的声明
class Singelton
{
private:
//构造函数私有,外部无法调用
Singelton(){}
//静态类对象指针
static Singelton* singel;
public:
//提供给外部的构造本类对象的接口(全局访问点)
static Singelton* GetInstance();
};
//静态成员类外初始化
Singelton* Singelton::singel = NULL;
//获取类对象接口实现
Singelton* Singelton::GetInstance()
{
if(singel== NULL)
{
singel = new Singelton();
}
return singel;
}
测试程序:
int main()
{
Singelton* p1=Singelton::GetInstance();
Singelton* p2=Singelton::GetInstance();
if(p1 ==p2)
cout<<"ok"<<endl;
else
cout<<"no"<<endl;
return 0;
}
相关文章推荐
- 行列元素 eg:img之间明明没距离,为什么还是有间距
- Volley ImageLoader加载本地图片特别版
- paper 12:机器学习常见算法分类汇总
- 2016/1/20 总结构建子类对象时的顺序
- Java [Leetcode 328]Odd Even Linked List
- 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 已将数据库上下文更改为
- centos下网络配置方法(网关、dns、ip地址配置)
- 一个网站的开发流程
- Web的脆弱性:各种注入、攻击
- Quartz2.x(包括1.x)开发(调度器数据保存在持久层)出现的问题
- Quartz2.x(包括1.x)开发(调度器数据保存在持久层)出现的问题
- ECUG 2015|许式伟:对编程语言的选择无关阵营,关乎品味
- 使用 Heka 导入自定义的nginx日志到Elasticsearch
- CSS总结
- 线段树成段更新模板
- 指令分割符
- 关于组播的测试
- ASP.NET 5 改名 ASP.NET Core 1.0
- android 模拟返回键功能
- Linux下vsftpd安装以及配置FTP虚拟用户实践