《大话设计模式》--笔记(单例模式)
来源:互联网 发布:淘宝神笔模板尺寸 编辑:程序博客网 时间:2024/04/29 03:21
单例模式:保证一个类仅有一个实例,并提供一个供访问的全局点。
其它优点:单例模式因为是卦装的它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。
简单的说就是对唯一实例的受控访问。
调用:
以上方式存在不足。
在多线程的程序中,多个线程同时访问单例类,调用GetInstance()方法,会有可能造成创建多个实例
在这种情况下,给进行加一把锁来处理。(lock)
多线程时的单例
现对以上Singleton类进行改良
lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定代码,
则它将一直等,直到对象被释放。
SynSingleton类中使用的线程lock是能达到目的,但对性能有影响。
可以采用双重锁定来改良一下。
如下:
注:
实际应用当中,C#与公共语言运行库也提供了一种“静态初始化”方法,这种方法不需要开发人员显示的编写线程安全代码
即可解诀多线程环境下它是不安全的问题
例如:
//关键字sealed 阻步派生,以免发生多个实例
public sealed class Singleton
{
private static readonly Singleton instance=new Singleton(); //在第一次引用类的任何成员时创建实例,公共语言库负责处理变量初始化
private Singleton()
{}
public static Singleton GetInstance()
{
return instance;
}
}
以上这种方式也被称为懒汉式单例模式
- 《大话设计模式》--笔记(单例模式)
- 大话设计模式-单例模式
- 大话设计模式_单例模式
- 大话设计模式 单例模式
- 大话设计模式之一:单例模式
- 大话设计模式之单例模式
- 大话设计模式--单例模式
- 大话设计模式-单例模式
- 大话设计模式 单例模式
- linkin大话设计模式--单例模式
- 大话设计模式之单例模式
- 大话设计模式之单例模式
- 大话设计模式-单例模式
- 大话设计模式—单例模式
- 大话设计模式21----单例模式
- 大话设计模式(四)单例模式
- 大话设计模式之单例模式
- 大话设计模式之单例模式
- 第一次测试
- 使用 sp_executesql
- 今天开始!
- DirectShow中网络播放器的源Source Filter
- 查杀被锁资源的进程(LINUX操作系统下)
- 《大话设计模式》--笔记(单例模式)
- snmp笔记
- Jsp不支持EL的问题
- msn登陆不起,出现错误代码80048820的解决办法
- 扩展字符串左右对齐方法
- DirectShow中写push模式的source filter流程 + 源代码(内附详细注释)
- 提取骨架(细化)
- JavaScript动态的为元素添加事件
- amazon ec2