当前位置:  编程技术>.net/c#/asp.net

C#单例模式(Singleton Pattern)实例教程

    来源: 互联网  发布时间:2014-11-03

    本文导语:  本文以实例形式讲述了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#程序设计有所帮助。


    
 
 

您可能感兴趣的文章:

  • C#设计模式之外观模式介绍
  • c#标准idispose模式使用示例
  • c# 适配器模式
  • C#模板方法模式(Template Method Pattern)实例教程
  • C#对象为Null模式(Null Object Pattern)实例教程
  • C#策略模式(Strategy Pattern)实例教程
  • c# 备忘录模式
  • C#观察者模式(Observer Pattern)实例教程
  • C#复合模式(Composite Pattern)实例教程
  • C#备忘录模式(Memento Pattern)实例教程
  • 《Java 与模式》c#的部分改写(I)
  • c# 代理模式
  • C# 设计模式之Abstract Factory 抽象工厂(概念)
  • C#装饰器模式(Decorator Pattern)实例教程
  • C#迭代器模式(Iterator Pattern)实例教程
  • c# 组合模式
  • C#中利用代理实现观察者设计模式详解
  • 深入C#字符串和享元(Flyweight)模式的使用分析
  • C#中的IDisposable模式用法详解
  • C# 设计模式之Singleton单例模式
  • 请问在一个servlet里取得一个用singleton模式实现的类实例,那么这个类实例的生命周期是怎样的?
  • Python下singleton模式的实现方法
  • 五种单件模式之Singleton的实现方法详解
  • 基于静态Singleton模式的使用介绍
  • php单例模式(Singleton Pattern)实例教程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java单例模式实例简述
  • php工厂模式实例代码
  • Extjs4实例:Form下拉列表combobox remot模式
  • C++设计模式之简单工厂模式实例
  • Python设计模式之代理模式实例
  • 设计模式之构建(Builder)模式 建造房子实例分析
  • Java设计模式之装饰者模式详解和代码实例
  • Python设计模式之观察者模式实例
  • C++单例模式应用实例
  • c/c++ iis7站长之家
  • Android 听筒模式的具体实现实例
  • PHP设计模式之观察者模式(Observer)详细介绍和代码实例
  • Python设计模式之单例模式实例
  • asp.net实例 添加textbox到datagrid控件的编辑模式
  • C# 观察者模式实例介绍
  • Office 2010 Module模式下使用VBA Addressof
  • 在linux下如何在桌面环境下切换到命令行模式,如何在命令行模式切换到桌面模式
  • GOF设计模式简介- 责任链模式
  • linux epoll的ET模式和LT模式的主要区别是什么呢?为什么ET模式一定要用非阻塞socket?
  • 无线网卡工作模式介绍以及如何设置工作模式
  • 用户模式和内核模式
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • IA32架构下,能从保护模式返回实模式吗?
  • java观察者模式概念及相关类介绍
  • 如何从字符模式切换到图形模式?
  • Docker 四种网络模式及网络配置详细介绍
  • 如何从文本模式返回到桌面模式
  • 怎么从图形模式进入文字模式?
  • 如何进入安全模式或console模式
  • 图形模式 和 命令模式 有什么特别的区别吗?
  • 如何从桌面模式切换到文本模式??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3