C#单例模式的简单使用
单例模式示例:
public sealed class WindowService
{//定义一个私有的静态全局变量来保存该类的唯一实例private static WindowService Service;//定义一个只读静态对象//且这个对象是在程序运行时创建的private static readonly object syncObject = new object();/// <summary>/// 构造函数必须是私有的/// 这样在外部便无法使用 new 来创建该类的实例/// </summary>private WindowService(){ }/// <summary>/// 定义一个全局访问点/// 设置为静态方法/// 则在类的外部便无需实例化就可以调用该方法/// </summary>/// <returns></returns>public static WindowService GetInstance(){//这里可以保证只实例化一次//即在第一次调用时实例化//以后调用便不会再实例化//第一重 singleton == nullif (Service == null){lock (syncObject){//第二重 singleton == nullif (Service == null){Service = new WindowService();}}}return Service;}
}
精简一下代码
#region 单例模式
private static 替换成类名 _替换成类名;
private static readonly object syncObject = new object();
private 替换成类名() { }
public static 替换成类名 GetInstance()
{if (_替换成类名 == null)lock (syncObject)if (_替换成类名 == null)_替换成类名 = new 替换成类名();return _替换成类名;
}
#endregion
C#单例模式的简单使用相关推荐
- java单例模式的应用_java单例模式的简单应用例子
单例模式:用于保证在程度的运行期间某个类有且只有一个实例 优势:在于尽可能节约资源 应用场景:还不太懂,希望懂的前辈们补充 -------------------- 通过修改构造方法的访问权限实现单例 ...
- C#中单例模式最简单用法之Lazy
例如下面这个类要实现单例模式,只需要增加一个Lazy并返回AppData的实例即可. public class AppData {public static AppData Instance = ne ...
- std string与线程安全_这才是现代C++单例模式简单又安全的实现
前言 说到单例模式,很多人可能都已经很熟悉了,这也是面试常问的一个问题.对于单线程而言,单例的实现非常简单,而要写出一个线程安全的单例模式,曾经有很多种写法.有兴趣的可以参考这篇文章<单例模式很 ...
- C语言实现简单的单例模式
单例模式就是在程序运行过程中只存在此"对象"的一个"实例",C语言实现单例模式就是简单的运用static全局变量. 我们的学号在教务系统中无论在任何地点进行任何 ...
- 最简单的单例模式,Go版本的实现你写对了吗?
首先问大家一个问题,你们面试的时候,面试官有没有问过你们:"你都用过什么设计模式?",我猜多数人的回答会把单例模式,放在第一位. 我:"呃- 我用过单例.工厂.观察者,反 ...
- GOF23设计模式(创建型模式)单例模式
目录: 一:单例模式的核心作用.常见应用场景 二:五种单例模式及其实现 三:关于反射和反序列化破解单例模式的漏洞,以及相应的解决方案 四:测试五种单例模式的效率 一:核心作用及常见应用场景: 核心作用 ...
- filter java 是单例的吗_JAVA 设计模式之 单例模式详解
单例模式:(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点.单例模式是创建型模式.单例模式在现实生活中应用也非常广泛. 在 J2EE 标准中,S ...
- 单例模式的java实现
2019独角兽企业重金招聘Python工程师标准>>> 前段时间买了几本java相关的书,每天晚上回去看一两个小时,感受颇深.因此写几篇随笔,作为读书笔记,加深下个人理解,顺便与大家 ...
- 深入Java单例模式
在GoF的23种设计模式中,单例模式是比较简单的一种.然而,有时候越是简单的东西越容易出现问题.下面就单例设计模式详细的探讨一下. 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在 ...
最新文章
- LeetCode-笔记-143. 重排链表
- c语言程序设计文件操作,c语言程序设计文件操作方法示例(CreateFile和fopen)
- RESTful Android
- 【PAT (Advanced Level) Practice】1124 Raffle for Weibo Followers (20 分)
- 【债券】可转换债券基本概念
- ffmpeg实战教程(八)Android平台下AVfilter 实现水印,滤镜等特效功能
- 深化管理、提升IT的数据平台建设方案
- Flutter/Dart使用正则表达式验证手机号
- java flash_存在漏洞的Java及Flash版本使用者众多
- schema中字段类型的定义
- 魅族u20怎么刷Android,魅族魅蓝U20/U10一键Root权限获取+USB驱动安装
- 浅谈深度信念网络(Deep Belief Network)
- 按键精灵制作自用游戏脚本所需的简单操作
- 重学scala:scala面向对象编程之类与对象
- 股权转让项目:厦门古龙温泉山庄开发有限公司60%股权转让
- Butterfly主题背景魔改
- 前端初学学习进程XII
- 罗斯蒙特变送器技能应受器重
- OM | 电子商务平台中的合约选择:批发合约or代理合约?
- [PTA]实验10-1 圆形体体积计算器