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();

                        }

                }

          }

     

    }


    }



  • 相关阅读:
    oled屏幕配套取字模软件使用
    STM32f407---oled屏幕配套取字模软件使用
    基于 STM32F407 使用 4*4 矩阵键盘(附完整程序)
    【STM32学习笔记】STM32f407 使用4*4矩阵键盘
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    java-spring 错误 Unsupported class file major version 57
  • 原文地址:https://www.cnblogs.com/wsq724439564/p/3258208.html
Copyright © 2011-2022 走看看