c#设计模式==单例模式
来源:互联网 发布:新浪用户数据库价格 编辑:程序博客网 时间:2024/06/05 20:48
单例模式,保证了一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式是我唯一一个体验过效果的模式,在qt窗体编程的时候,有时候主界面仅需要出现一个实例,所以就给主界面用上了单例模式,方便以后无论在哪个子窗口中,都能访问主窗口的公有成员,这个模式解决了我很多困扰。
首先,若是在程序中没有出现多个线程的情况,可以采用以下方式实现单例模式:
class Single { private static Single instance; private Single() { } public static Single getInstacnce() { if (instance == null) { instance = new Single(); } return instance; } }但是,这个仅限于无线程的时候,一旦出现线程后,就会出现问题,就是第一个线程进入了if,但是还没有创建实例的时候,另一个线程也进入了if,这个时候就会出现两个,甚至是多个实例。
既然有缺陷,那么肯定有改进的方法,
1、双重锁定
class Single { private static Single instance; private static readonly object syncRoot = new object(); private Single() { } public static Single getInstacnce() { if (instance == null) { lock (syncRoot) { if (instance == null) { instance = new Single(); } } } return instance; } }
2、静态初始化
class Single { private static readonly Single instance = new Single(); private Single() { } public static Single getInstacnce() { return instance; } }
0 0
- c#设计模式==单例模式
- C#单例设计模式
- C#单例设计模式
- C#设计模式(单例
- C# 单例设计模式
- C# 单例设计模式
- c# 设计模式:单例模式
- c# 设计模式:单例模式
- C#设计模式之单例模式
- C#设计模式-单例模式
- C#设计模式(1)单例模式
- C#设计模式_单例模式
- C#设计模式04-单例模式
- 【C#设计模式-单例模式】
- c#设计模式-单例模式
- C#设计模式-单例模式
- c#设计模式-单例模式
- c#设计模式之单例模式
- 设计模式之9--装饰者模式
- 命令模式--把需求记录在案,让事务灵活可变(行为模式02)
- 设计模式之10--桥接模式
- 设计模式之11--组合模式
- 2.4 CSS浮动&&浮动的清除
- c#设计模式==单例模式
- 设计模式之12--代理模式
- How many ways
- 用户解锁
- 多线程TCP文件上传
- 内部类
- 2.5 CSS margin
- 排序(上):基于比较的排序
- POJ 1032 Parliament