C#设计模式—— 单例模式
来源:互联网 发布:win10禁止自动更新软件 编辑:程序博客网 时间:2024/06/05 19:15
单例模式
什么是单例模式
单例模式就是在一个程序里面只存在一个实例,不允许创建多个实例。
单例模式的优点
单例模式会控制其实例对象的数量,确保访问的唯一性。
单例模式是通过自己创建自己的唯一实例。
单例模式会给其他对象提供一个获取实例的方法。
单例模式代码
/// <summary> /// 单例模式 /// </summary> public class Singleton { //定义一个静态变量来保存类的实例 private static Singleton singLeton; //定义一个私有的构造函数,让外部不能实例化 private Singleton() { } //定义一个访问点,让外部可以进行创建 public static Singleton GetInstance() { if (singLeton == null) { singLeton = new Singleton(); } return singLeton; } }}
上面这种写法很简单,但是没有考虑线程安全,如果在多线程下面就会出现多个实例化的对象。
/// <summary> /// 单例模式 /// </summary> public class Singleton { // 定义一个标识确保线程同步 private static Object ob = new object(); //定义一个静态变量来保存类的实例 private static Singleton singLeton; //定义一个私有的构造函数,让外部不能实例化 private Singleton() { } //定义一个访问点,让外部可以进行创建 public static Singleton GetInstance() { //减少开支,如果已经有实例,这儿进行判断就不用再进入判断 if (singLeton == null) { // 当第一个线程运行到这里时,此时会对locker对象 "加锁", // 当第二个线程运行该方法时,首先检测到locker对象为"加锁"状态,该线程就会挂起等待第一个线程解锁 // lock语句运行完之后(即线程运行完之后)会对该对象"解锁" // 双重锁定只需要一句判断就可以了 lock (ob) { if (singLeton == null) { singLeton = new Singleton(); } } singLeton = new Singleton(); } return singLeton; } }}
0 0
- C#设计模式—单例模式
- C#设计模式(1)——单例模式
- C#设计模式——单例模式
- C#设计模式(1)——单例模式
- C#设计模式(1)——单例模式
- C#设计模式(1)——单例模式
- C#设计模式——单例模式(Singleton)
- C#设计模式(1)——单例模式
- C#设计模式——单例模式
- C#设计模式—— 单例模式
- C#设计模式(1)——单例模式
- C#设计模式——单例模式
- C#设计模式(1)——单例模式
- C#设计模式(1)——单例模式
- C#设计模式——单例模式
- 设计模式—单例设计模式
- C#单例设计模式
- C#单例设计模式
- 我为什么要写博客
- c++vector类常见用法
- oracle存储过程中is和as的区别
- hadoop学习笔记之前期准备 ubuntu16.04虚拟机安装、WMwareTools安装及网络配置
- 蓝桥杯 大臣的旅费(最短路)
- C#设计模式—— 单例模式
- JS 中元素的各种位置尺寸宽高
- Ajax-note
- 1020. 月饼
- PAT甲级1055. The World's Richest (25)
- DPDK中文-DPDK工具
- 基数排序
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结——第二章 Java内存区域与内存溢出异常
- vue.js中使用set方法