单例模式及c++实现
来源:互联网 发布:ie浏览器无法登录淘宝 编辑:程序博客网 时间:2024/05/23 19:21
单例模式及c++实现
昨天面试淘宝,面试官让我写个单例模式,一时语塞。惭愧设计模式没看好,回来研究了一下,在单例模式构造函数是可以private的,用静态成员函数GetInstance来获得实例。
单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
一些资源管理器常常设计成单例模式。让一个类产生同一个对象对客户端服务的时候,比如管理数据库连接,管理文件IO等,这时我们就要使用到单例模式。下面是该模式的C++实现(注泽说明)
#include <iostream>
using namespace std;
//单例类的C++实现
class Singleton { private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singleton* instance;//惟一实例 int var;//成员变量(用于测试) public: static Singleton* GetInstance();//工厂方法(用来获得实例) int getVar();//获得var的值 void setVar(int);//设置var的值 };
//构造方法实现
Singleton::Singleton() { this->var = 20; cout<<"Singleton Constructor"<<endl; } Singleton::~Singleton() { delete instance; } //初始化静态成员 Singleton* Singleton::instance=new Singleton(); Singleton* Singleton::GetInstance() { return instance; } //seter && getter含数 int Singleton::getVar() { return this->var; } void Singleton::setVar(int var) { this->var = var; } //main int main(int argc, char* argv[]) { Singleton *ton1 = Singleton::GetInstance(); Singleton *ton2 = Singleton::GetInstance(); cout<<"ton1 var = "<<ton1->getVar()<<endl; ton1->setVar(150); cout<<"ton2 var = "<<ton2->getVar()<<endl;return 0; }
输出如下:
Singleton Constructor
ton1 var = 20
ton2 var = 150
在输出结果中,构造方法只调用了一次,ton1与ton2是指向同一个对象的。
0 0
- 单例模式应用场景及实现(By C++)
- 设计模式--单例模式 C++实现
- 设计模式之单例模式(c++)实现及问题
- 单例模式singleten及实现思想
- 单例模式及c++实现
- 单例模式及C++实现
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- 单例模式及C++实现代码
- Objective C 中实现单例模式
- Objective C 实现Singleton(单例)模式.
- Objective-C实现单例模式
- struts1 配置文件扩展
- SIFT特征提取分析
- 用正则表达式将文字转换成表情图片
- java环境变量设置 --- 小笔记
- ActionScript 不断放大的圆
- 单例模式及c++实现
- 机器学习一张图
- hbase 远程链接
- HDFS daily maintenance,, useful command
- 没有为扩展名“.html”注册的生成提供程序, url 转发时不能跳转到静态页
- 别人都说你是疯子的时候,或许正是 你离目标越来越近的时候。。
- 解决SQL Server查询中使用Union或Union All后Order by排序无效的bug(好神奇啊!!)
- 巧妙解决程序运行在兼容模式下时window版本欺诈问题
- SSL 错误:Key usage violation in certificate has been detected.