C#单例模式(Singleton Pattern)实例教程
发布时间:2020-12-15 05:55:13 所属栏目:百科 来源:网络整理
导读:本文以实例形式讲述了C#单例模式(Singleton Pattern)的实现方法,供大家参考研究。具体实现方法如下: 一般来说, 当从应用程序全局的角度来看,如果只允许类的一个实例产生,就可以考虑单例模式。 1.即时加载的单例模式 把类的实例赋值给类的一个静态
本文以实例形式讲述了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#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- cocos2dx 3.3 quick lua 实现返回键退出程序
- ruby – Rails将无效路由重定向到root
- postgresql – 这是Postgres版本
- 初学者安装oracle11g报错,求赐教
- ruby-on-rails – save(:validate => false)涵盖
- iphone – 在显示键盘时向上滚动tableviewcell
- sqlite 句柄-sqlite 基础教程(3)
- Oracle SQL ROW_NUMBER()窗口,其条件基于滞后
- ios – xcodebuild:错误:名为“myWorkspace”的
- ruby-on-rails – 跳过:保存ActiveRecord对象时
热点阅读