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对象时
热点阅读
