Singleton模式的.NET实现
在Windows Mobile下使用Native C++开发日志类文章中dpol提问 “在C#下面怎么应用Singleton模式呢?”。下面写一下Singleton模式的.NET实现。
public sealed class Logger : IDisposable{//the Singleton Implement // Static members are lazily initialized. // .NET guarantees thread safety for static initialization public static readonly Logger Instance = new Logger(); private Logger() { } public void Dispose() { }}
这个实现还是保证三个需求: 1. 有且只有一个对象实例化。 2.多线程的控制。3. 按需实例化。
sealed class 保证Singleton类不能被继承。什么时候中国人这个类变成 sealed 就好,不用老是被代表。
static Logger Instance 保证按需实例化和多线程安全。
private Logger() 保证只有一个对象实例化。
很简单吧。
修改记录:
1.根据回复增加 readonly 到定义中。
转载于:https://www.cnblogs.com/procoder/archive/2010/02/25/Singleton-NET.html
Singleton模式的.NET实现相关推荐
- Android发展Singleton模式
这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...
- Singleton模式笔记
在C++中,尽量用Singleton替换全局变量是个很好的建议,Singleton一般如下: class CSingleton { private: static CSingleton* m ...
- java设计模式:Singleton模式
Singleton模式是java中用到最多的设计模式.用于控制的个数,防止多余的实例化及修改.在仅有一个对象存在时,操作很有效. 1.构造函数私有化,其它类不能实例化对象 2.引用私有化,没有其它的修 ...
- Singleton模式学习
动机(Motivation) 在软件系统中,经常有这样一些类,必须保证它们在系统中只存在一个类的实例,才能确保它们逻辑的正确性,以及良好的效率 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实 ...
- 细颗粒度Singleton模式实现
作为一个很典型的设计模式,Singleton模式常常被用来展示设计模式的技巧,并且随着技术的演进,.NET语言和Java都已经把经典<Design Patterns : Elements of ...
- Design Pattern: Singleton 模式
一句话概括:保证一个类仅有一个实例,并提供一个访问它的全局访问点. Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance). 很多 ...
- 剑指 offer set 28 实现 Singleton 模式
singleton 模式又称单例模式, 它能够保证只有一个实例. 在多线程环境中, 需要小心设计, 防止两个线程同时创建两个实例. 解法 1. 能在多线程中工作但效率不高 public sealed ...
- Singleton模式的实现
1.实现Singleton模式 设计一个类,我们只能生成该类的一个实例. 2.低级解法一:只适用于单线程环境 因为我们只能生成一个实例,所以我们必须把构造函数设置为私有函数已禁止他人创建实例.可以定义 ...
- 人工智能——Singleton模式
上次在状态模式中的设计有一个严重的问题,就是如下: voidCTroll::ChageState(CState* pNewState) { deletem_pCurrentState; ...
- 转:Singleton模式
C++完美实现Singleton模式 转自:http://www.cppblog.com/dyj057/archive/2005/09/20/346.html boost库的Singleton的实现 ...
最新文章
- 《妙解Hibernate 3.X》读书笔记一-Hibernate概述及环境搭建
- iphone个系列尺寸_iPhone 12系列、11系列尺寸对比
- CentOS系统的优化
- python 拓扑排序正确版
- 输入一颗二元查找树,将该树转换为它的镜像
- python3.9出了吗_Python 3.9 正式版要来了,会有哪些新特性?
- linux/unix编程手册-61_64
- 带有Guice的富域模型
- 最近发现了一条新的“致富”路
- 单片机 多机通讯c语言,【C语言】89c52单片机的多机串口通讯,救助
- Sketch 67.2 简体中文版 最佳Mac产品原型设计工具
- 20本适合C/C++程序员入门的C/C++编程书籍PDF版
- Java项目(一):家庭收支记账软件
- Java图像处理——美颜相机项目核心
- 基于HTML5移动app开发教程一
- office修复找不到msi_Microsoft Office安装程序找不到ProPlus.WW\ProPlusWW.msi
- 开放平台中的鉴权的实现
- DataWhale活动-二手车价格预测 task3
- python 删除sheet_Python操作Excel删除一个Sheet
- 报告| Q3区块链游戏行业全景:玩赚强势驱动,链游热度持续
热门文章
- 程序设计用户生日怎么发推送_生日祝福:儿子生日怎么发朋友圈说说 儿子生日怎么写祝福语...
- 北京理工大学计算机学院杨晨,杨旭_北京理工大学计算机学院
- matlab求方程实根,简单迭代法求方程根的MATLAB程序
- md5util java_Java 工具类 - MD5Util
- 系统学习深度学习(三十五)--策略梯度(Policy Gradient)
- python 提取邮箱的正则表达式
- mysql 全局权限入门
- TADVAlertWindow
- 透过用户思维谈程序员的进阶之路
- Android 实现应用升级方案(暨第三方自动升级服务无法使用后的解决方案)