由于使用场景的不同,单例模式的写法也有所区别。

目前接触到的,大多数都是多线程,大量数据处理,还要考虑灵活性,对原有类结构改动最小等因素,所以写法更是多种多样。

QT个人较常用的一种写法:(两个文件:分为.h文件和.cpp文件)

 1 class LocalBusiness : public QObject
2 {
3 Q_OBJECT
4
5 private:
6 QString _myName;
7 explicit LocalBusiness(QObject *parent = nullptr);
8 static LocalBusiness* _instance;
9 public:
10 static LocalBusiness* Instance()
11 {
12 static QMutex mutex;
13 if (!_instance) {
14 QMutexLocker locker(&mutex);
15 if (!_instance) {
16 _instance = new LocalBusiness;
17 }
18 }
19 return _instance;
20 }
21 public:
22 void SayHello();
23
24 };
 1 LocalBusiness* LocalBusiness::_instance = nullptr;
2
3 LocalBusiness::LocalBusiness(QObject *parent) : QObject(parent)
4 {
5 _myName="LocalBusiness";
6 }
7
8 void LocalBusiness::SayHello()
9 {
10 qDebug() << "hello,"+_myName;
11 }

具体调用

1     LocalBusiness::Instance()->SayHello();

C#个人较常用的写法:(一个文件:.cs文件)

 1     public class LocalBusiness
2 {
3 private readonly string _myName = string.Empty;
4 private static LocalBusiness _instance = null;
5 private static readonly object _locker = new object();
6
7 private LocalBusiness()
8 {
9 _myName = "LocalBusiness";
10 }
11
12 public static LocalBusiness Instance
13 {
14 get
15 {
16 if (_instance == null)
17 {
18 lock (_locker)
19 {
20 if (_instance == null)
21 {
22 _instance = new LocalBusiness();
23 }
24 }
25 }
26 return _instance;
27 }
28 }
29
30 public void SayHello()
31 {
32 Console.WriteLine("hello,"+ _myName);
33 }
34 }

具体调用

1             LocalBusiness.Instance.SayHello();

如果有帮助,欢迎素质三连~

最新文章

  1. 使用Number.parseFloat引发的悲剧
  2. 分享一个移动项目中消除click事件点击延迟的方法
  3. Turn.js 实现翻书效果的学习与总结
  4. static关键字的用法和main函数
  5. Div+Css的初步运用
  6. MonkeyRunner源码分析之-谁动了我的截图?
  7. STL_deque双端队列
  8. photoshop软件应用手记
  9. Java:用Lambda表达式简化代码一例
  10. JMeter集合点
  11. Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
  12. 关于package,import,和“找不到可以加载的主类”报错之间的关系
  13. 田螺便利店—filezilla实现Linux和windows通信(二)
  14. 关于div容器在ie6下默认高度不为0(存在默认高度)
  15. 数据库sql语句例题(转)
  16. Python-ccs高级选择器 盒模型
  17. mvc+struct1+struct2
  18. git命令收集(记得持续更新)
  19. Docker01 CentOS配置Docker
  20. Linux下的Make命令实例详解

热门文章

  1. Ubu18.0-NVIDIA显卡驱动重装
  2. OSPF 路由协议详解(一)
  3. 解决go-micro与其它gRPC框架之间的通信问题
  4. 大一/初学者学C语言前必看!!!(建议收藏)
  5. Bugku练习题---MISC---FileStoragedat
  6. 用上这个 Mock 神器,让你的开发爽上天!
  7. app嵌套页
  8. JS运算符,流程控制,函数,内置对象,BOM与DOM
  9. 好客租房21-react组件的两种创建方式(函数组件)
  10. 自动化测试报告(allure/html)