1.单件模式(Singleton Pattern)
2024-10-13 14:29:19
意图:为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。
1.简单实现(多线程有可能产生多个实例)
public class CommonSigleton
{
/// <summary>
/// 私有的对象
/// </summary>
private static CommonSigleton instance; /// <summary>
/// 构造方法为Private
/// </summary>
private CommonSigleton()
{ } /// <summary>
/// 公有的属性
/// </summary>
public static CommonSigleton Instance
{
get
{
if(instance == null)
{
instance = new CommonSigleton();
} return instance;
}
}
}
2.双重锁定实现(lock关键字)
public class DoubLockSigleton
{
private static volatile DoubLockSigleton instance; /// <summary>
/// 辅助锁对象,本身没有意义
/// </summary>
private static object syncRoot = new Object(); /// <summary>
/// 构造方法改为Private
/// </summary>
private DoubLockSigleton()
{ } public static DoubLockSigleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new DoubLockSigleton();
}
} return instance;
}
}
}
3.利用C#特性实现
///该类标记sealed阻止发生派生增加实例
public sealed class DotNetSigleton
{
//变量标记为 readonly,这意味着只能在静态初始化期间(此处显示的示例)或在类构造函数中分配变量。
//公共静态属性为访问实例提供了一个全局访问点。此外,由于构造函数是私有的,因此不能在类本身以外实例化
private static readonly DotNetSigleton instance = new DotNetSigleton(); //由于 Singleton 实例被私有静态成员变量引用,因此在类首次被对Instance属性的调用所引用之前,不会发生实例化。
private DotNetSigleton(){} public static DotNetSigleton Instance
{
get
{
return instance;
}
}
}
最新文章
- leanote个人版安装
- 图文介绍如何在Eclipse统计代码行数
- clearfix清除浮动
- SparkSQL DataFrames操作
- protobuf
- ADO.net 实体类 、数据访问类
- RecyclerView(4)简单示例
- STL——静态常量整数成员在class内部直接初始化
- celery 使用multiprocessing 问题记录
- Android 之http编程
- HDU1081 最大字段和 压缩数组
- head first python菜鸟学习笔记(第四章)
- Python内置函数(40)——dir
- 去除菜单项的加速键--‘&;’符号
- 4--TestNG测试报告
- Java删除文件夹和其子文件、文件的拷贝和剪切
- zoj3956(Course Selection System)_Solution
- kraken-ejs创建一个项目【学习札记】
- [JSOI2007]文本生成器(AC自动机,DP)
- 基于单个 div 的 CSS 绘图
热门文章
- strstr()
- 改变字典内的value
- win7下virtualbox装linux共享win7文件问题(已测试可用)
- C++ 模板双向不循环链表!!
- Linux shell的标准输入、输出和错误
- C++中的异常处理(一)
- Java基础—ClassLoader的理解
- editplus快速定位到文章头部和尾部
- cf.VK CUP 2015.B.Mean Requests
- [Effective JavaScript 笔记]第31条:使用Object.getPrototypeOf函数而不要使用__proto__属性