网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

web中怎么使用单例模式

这篇文章主要为大家展示了“web中怎么使用单例模式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web中怎么使用单例模式”这篇文章吧。

站在用户的角度思考问题,与客户深入沟通,找到嘉禾网站设计与嘉禾网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖嘉禾地区。

介绍

单例模式,顾名思义就是只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。下面我们来看下有哪几种实现方式吧。

实现方式

1、使用lock ,保证方法只有一个线程可以进入。

///      /// 单例类     ///      public class Singleton     {         private Singleton()         {             long lResult = 0;             for (int i = 0; i < 100 - 000 - 000; i++)             {                 lResult += i;             }             Thread.Sleep(2000);             Console.WriteLine($"{this.GetType().Name}完成构造....");         }         private static Singleton Instance = null;         private static readonly object Singleton_Lock = new object();         public static Singleton CreateInstance()         {             if (Instance == null)             {                 lock (Singleton_Lock)//保证方法块儿只有一个线程可以进入                 {                     Console.WriteLine("进入lock排队....");                     Thread.Sleep(1000);                     if (Instance == null)                         Instance = new Singleton();                 }             }             return Instance;         }          public static void DoNothing()         {             Console.WriteLine("DoNothing");         }          public void Show()         {             Console.WriteLine($"{this.GetType().Name} Show....");         }     }

2、使用静态构造函数,由CLR调用,在类型第一次被使用前调用,且只调用一次。

///      /// 单例类     ///      public class SingletonSecond     {         private SingletonSecond()         {             long lResult = 0;             for (int i = 0; i < 100 - 000 - 000; i++)             {                 lResult += i;             }             Thread.Sleep(2000);             Console.WriteLine($"{this.GetType().Name}完成构造....");         }         private static SingletonSecond Instance = null;         ///          /// 静态构造函数,由CLR调用,在类型第一次被使用前调用,且只调用一次!         ///          static SingletonSecond()         {             Instance = new SingletonSecond();         }         public static SingletonSecond CreateInstance()         {                          return Instance;         }          public static void DoNothing()         {             Console.WriteLine("DoNothing");         }          public void Show()         {             Console.WriteLine($"{this.GetType().Name} Show....");         }     }

3、使用静态字段,由CLR调用,在类型第一次被使用前初始化,且只初始化一次。

///      /// 单例类     ///      public class SingletonThird     {         private SingletonThird()         {             long lResult = 0;             for (int i = 0; i < 100 - 000 - 000; i++)             {                 lResult += i;             }             Thread.Sleep(2000);             Console.WriteLine($"{this.GetType().Name}完成构造....");         }         ///          /// 静态字段,由CLR调用,在类型第一次被使用前初始化,且只初始化一次!         ///          private static SingletonThird Instance = new SingletonThird();                 public static SingletonThird CreateInstance()         {                          return Instance;         }          public static void DoNothing()         {             Console.WriteLine("DoNothing");         }          public int iNum = 0;         public void Show()         {             Console.WriteLine($"{this.GetType().Name} Show..{iNum++}..");         }          public void Add()         {             this.iNum++;         }     }

使用场景

1、需要生成唯一序列的环境。

2、需要频繁实例化然后销毁的对象。

3、创建对象时耗时过多或者耗资源过多,但又经常用到的对象。

4、方便资源相互通信的环境。

以上是“web中怎么使用单例模式”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享文章:web中怎么使用单例模式
分享地址:http://bjjierui.cn/article/jpsdio.html

其他资讯