单例模式例子
2014-03-01 17:24
260 查看
c11.cc
#include "c11.h" #include <stdio.h> int main() { printf("singleton:\n"); Singleton* s1 = Singleton::getInstance(); printf("%d\n", s1->tag); s1->tag++; Singleton& s2 = *(Singleton::getInstance()); printf("%d\n", s2.tag); printf("nonSingleton:\n"); NonSingleton* ns1 = new NonSingleton; printf("%d\n", ns1->tag); ns1->tag++; NonSingleton* ns2 = new NonSingleton; printf("%d\n", ns2->tag); return 0; }
c11.h
#include <stdlib.h> class Singleton { private: Singleton():tag(0) {}; ~Singleton() {}; Singleton(Singleton const&) = delete; // 必需 Singleton& operator=(Singleton const&) = delete; // 必需 public: int tag; static Singleton* getInstance() { static Singleton uniqueSingleton; return &uniqueSingleton; }; }; class NonSingleton { public: int tag; NonSingleton():tag(0) {} };
根据c++11规范,这种实现是线程安全的.
参考:
Is Meyers implementation of Singleton pattern thread safe?
How is Meyers' implementation of a Singleton actually a Singleton
相关文章推荐
- 一个Bridge模式的例子
- 设计模式六大原则例子(三)-- 里氏替换原则(LSP)例子
- 设计模式之调停者模式(2)例子
- 策略模式原理及例子代码
- Singleton --单例模式例子
- 设计模式六大原则例子(六)-- 开放封闭原则(OCP)例子
- 《Head First 设计模式》例子的C++实现(2 观察者模式)
- C++实现工厂模式的例子
- 修饰模式(Decorator结构型)C#简单例子
- 模板方法设计模式例子
- 观察者模式及Java实现例子
- 单例模式c++例子
- MVP模式学习———登陆例子
- [设计模式]_[观察者模式在窗口之间消息传递的使用例子]
- DX90SDK SDK源码分析(一) 拉模式的例子
- 常用设计模式及例子(五)
- 学习观察者模式的一个例子
- 状态模式(state)解析例子
- 职责链模式(chain of responsibility)解析例子 推荐
- 通过例子学设计模式之--原型模式以及使用场景说明(C++实现)