本文以实例形式讲述了C#单例模式(Singleton Pattern)的实现方法,分享给大家供大家参考。具体实现方法如下:
一般来说,当从应用程序全局的角度来看,如果只允许类的一个实例产生,就可以考虑单例模式。
1.即时加载的单例模式
把类的实例赋值给类的一个静态字段。
class Program { static void Main(string[] args) { Logger log = Logger.GetInstance(); log.WriteToFile(); Console.Read(); } } public class Logger { private static Logger logger = new Logger(); private Logger(){} public static Logger GetInstance() { return logger; } public void WriteToFile() { Console.WriteLine("错误被写入文件了~~"); } }
2.延迟加载的单例模式
直到调用类的静态方法,才产生类的实例。
public class Logger { private static Logger logger = null; private Logger(){} public static Logger GetInstance() { if (null == logger) { logger = new Logger(); } return logger; } public void WriteToFile() { Console.WriteLine("错误被写入文件了~~"); } }
3.线程安全的单例模式
直到调用类的静态方法,保证只有一个线程进入产生类的实例。
public class Logger { private static Logger logger = null; private static object lockObj = new object(); private Logger(){} public static Logger GetInstance() { lock (lockObj) { if (logger == null) { logger = new Logger(); } return logger; } } public void WriteToFile() { Console.WriteLine("错误被写入文件了~~"); } }
总结:静态单例类型的私有字段,私有构造函数,获取单例的方法是构成单例模式的3个必要元素。希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C# 设计模式系列教程-单例模式,包括了C# 设计模式系列教程-单例模式的使用技巧和注意事项,需要的朋友参考一下 1. 描述: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 2. 单例模式主要有3个特点,: 2.1 单例类确保自己只有一个实例。 2.2 单例类必须自己创建自己的实例。 2.3 单例类必须为其他对象提供唯一的实例。 3. 实现方式:懒汉单例类和
单例模式的定义 确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例。 方法一: static Singleton *getInstance() { static Singleton locla_s; return &locla_s; } 该代码可能在c++11之前的版本导致多次构造函数的调用,所以只能在较新的编译器上使用。 方法二:
本文向大家介绍c# 单例模式的实现,包括了c# 单例模式的实现的使用技巧和注意事项,需要的朋友参考一下 记一下学习单例模式的笔记: 单例就是要保证该类仅有一个实例。实现完全封闭的单例(外部不能new)其实就要两点要求: 全局访问:需要一个该类型的全局静态变量,每次获取实例时都要判断它是否null,不存在new,存在通过一个方法直接返回该值获取实例来保证对象唯一; 实例化控制:new实例不能
本文向大家介绍C#设计模式之单例模式实例讲解,包括了C#设计模式之单例模式实例讲解的使用技巧和注意事项,需要的朋友参考一下 前言 最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。所谓设计模式,我找了下定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工
本文向大家介绍C#命令模式(Command Pattern)实例教程,包括了C#命令模式(Command Pattern)实例教程的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式讲述了C#命令模式的实现方法,分享给大家供大家参考。具体实现方法如下: 现假设想让遥控器控制电灯的开关、电视机的开关和切换,该如何做? 所有的开、关、切换都是遥控器发出的指令,把这些指令统一抽象成一个接口。 把电灯
本文向大家介绍C#复合模式(Composite Pattern)实例教程,包括了C#复合模式(Composite Pattern)实例教程的使用技巧和注意事项,需要的朋友参考一下 本文以一个简单实例的形式讲述了C#复合模式。分享给大家供大家参考。具体实现方法如下: 一般在显示树形结构时,复合模式有很好的体现。本文实例显示如下部门结构: 如上图所示,有的节点包含子节点,有的节点不包含子节点。不管是什