zoukankan      html  css  js  c++  java
  • [置顶] 设计模式之单例模式 (Design patterns of the The singleton pattern)c#

         单例模式饿目的是确保某个类只有一份实例,而且从在一个全局访问点来访问这个实例,这一模式保证类只能被实例化一次,而且所有的请求都使用这个唯一的实例,此外,对象应该在使用的时候才被创建,在单例模式中,实施这种约束的是类本身,而不是类的额客户。

    理论代码:

    public sealed class Singleton{

    //私有构造函数

    Singleton(){ }

    //通过私有构造函数实例化的私有对象

    static readonly Singleton instance=new Singleton();

    //获取对象的共有静态属性

    public static Singleton UniqueInstance{

    get { return instance;}

    }

    }


    单例模式------懒惰式初始化(懒汉模式)

    //sealed 阻止发生派生,而派生可能增加实例

    public sealed class Singleton{

    //私有构造函数

    Singleton(){ }

    //用于懒惰式初始化的嵌套类

    class SingletonCreator(){

    static SingletonCreator(){}

    //通过私有构造函数实例化的私有对象

    internal static readonly Singleton uniqueInstance =new Singleton();

    }


    public static Singleton UniqueInstance{

    get { return SingletonCreator.uniqueInstance;}

    }

    }


    多线程时的单例模式

    class Singleton

    {

     private static Singleton instance;

     private static readonly object syncRoot=new object();  //创建一个静态只读的进程辅助对象,

     private Singleton()

     {

     }

     public static SingletonGetInstance()

     {

         if(instance==null) // 双重锁定

          {

                //锁定进程 ,当线程位于代码的临界区时,另一个线程不进入临界区,如果其他线程试图进入锁定的代码,它将一直等待,知道该对象释放。

                lock(syncRoot)

                {

                      if(instance==null)  //双重锁定

                       { 

                           instance=new Singleton();

                        }

                }

          }

     

    }


    }



  • 相关阅读:
    windbg 内核模式调试用户进程
    深发展银行编码器(解剖)
    SIM300常用命令
    tdi驱动 for vista or later
    vm命令行控制 (vmrun)
    WMI事件监控
    Visual C++ 中 #pragma 指示符的使用
    IOCP开发的几个概念
    移动web.config文件时造成的错误,
    提高网站速度|页面优化
  • 原文地址:https://www.cnblogs.com/wsq724439564/p/3258208.html
Copyright © 2011-2022 走看看