当前位置: 首页 > news >正文

东莞网页建设网站wordpress淘客优惠券

东莞网页建设网站,wordpress淘客优惠券,网站设计作业,网站每天点击量多少好单例模式大概是所有设计模式中最简单的一种#xff0c;如果在面试时被问及熟悉哪些设计模式#xff0c;你可能第一个答的就是单例模式。 单例模式的实现分为两种#xff1a; 饿汉式#xff1a;在静态构造函数执行时就立即实例化。懒汉式#xff1a;在程序执行过程中第一…单例模式大概是所有设计模式中最简单的一种如果在面试时被问及熟悉哪些设计模式你可能第一个答的就是单例模式。 单例模式的实现分为两种 饿汉式在静态构造函数执行时就立即实例化。懒汉式在程序执行过程中第一次需要时再实例化。 两者有各自适用的场景实现方式也都很简单唯一在设计时要考虑的一个问题就是实例化时需要保证线程安全。 1. 饿汉式 饿汉式实现很简单在静态构造函数中立即进行实例化 public class Singleton {private static readonly Singleton _instance;static Singleton(){_instance new Singleton();}public static Singleton Instance{get{return _instance;}} }注意为了确保单例性需要使用 readonly 关键字声明实例不能被修改。 以上写法可简写为 public class Singleton {private static readonly Singleton _instance new Singleton();public static Singleton Instance{get{return _instance;}} }这里的 new Singleton() 等同于在静态构造函数中实例化。在 C# 7 中还可以进一步简写如下 public class Singleton {public static Singleton Instance { get; } new Singleton(); }一句代码就搞定了此写法实例化也是在默认的静态构造函数中进行的。如果是饿汉式需求这种实现是最简单的。有人会问这会不会有线程安全问题如果多个线程同时调用 Singleton.Instance 会不会实例化了多个实例。不会因为 CLR 确保了所有静态构造函数都是线程安全的。 注意不能这么写 public class Singleton {public static Singleton Instance new Singleton(); } // 等同于 public class Singleton {public static Singleton Instance{get { return new Singleton(); }} }这样会导致每次调用都会创建一个新实例。 2. 懒汉式 懒汉式单例实现需要考虑线程安全问题先来看一段经典的线程安全的单列模式实现代码 public sealed class Singleton {private static volatile Singleton _instance;private static readonly object _lockObject new Object();public static Singleton Instance{get{if (_instance null){lock (_lockObject){if (_instance null){_instance new Singleton();}}}return _instance;}} }网上搜索 C# 单例模式大部分都是这种使用 lock 来确保线程安全的写法这是经典标准的单例模式的写法没问题很放心。在 lock 里外都做一次 instance 空判断双保险足以保证线程安全和单例性。但这种写法似乎太麻烦了而且容易写错。早在 C# 3.5 的时候就有了更好的写法使用 LazyT。 示例代码 public class LazySingleton {private static readonly LazyLazySingleton _instance new LazyLazySingleton(() new LazySingleton());public static LazySingleton Instance{get { return _instance.Value; }} }调用示例 public class Program {public static void Main(){var instance LazySingleton.Instance;} }使用 Lazy 可以使对象的实例化延迟到第一次被调用的时候执行通过访问它的 Value 属性来创建并获取实例并且读取一个 Lazy 实例的 Value 属性只会执行一次实例化代码确保了线程安全。 3. 应用示例 static void Main(string[] args) {LazySingleton p1 LazySingleton.Instance();p1.GetName();LazySingleton p2 LazySingleton.Instance();p2.GetName();if (p1 p2){Console.WriteLine(他们是同一个人);}else{Console.WriteLine(他们不是同一人);}Console.ReadLine(); }public class LazySingleton {private static volatile LazySingleton instance null;//保证instance在所有线程中同步//private防止类在外部被实例化private LazySingleton(){ }public static LazySingleton Instance(){if (instance null){instance new LazySingleton();}return instance;}public void GetName(){Console.WriteLine(詹姆斯);} }程序运行结果
http://www.hkea.cn/news/14539317/

相关文章:

  • 手机怎么做淘客网站网站建设常见故障
  • 免费网站模板网站注册号域名后如何建设公司网站
  • 胶州网站建设效果厦门网站制作建设
  • 重庆金山建设监理有限公司网站网站建设售后服务合同
  • 音乐网站建设教程视频a5源码网站
  • 个人做网站公司WordPress注册邮件美化
  • 涪陵网站制作wordpress健身模版
  • 网站建设优化服务新闻长春网站建设电话咨询
  • 怎么制作小网站 不用域名的永兴县网站建设公司哪家好
  • 广告网站建设流程广告网站建设与制作
  • 网站接口设置电子商务主要是干嘛的
  • 购物网站哪个质量好济宁建设局网站招聘会
  • 东莞网站建设市场欧美风企业网站 英文模板
  • 网站内容维护更新方法网站开发实例pdf
  • 秦时明月的个人网站怎么做台州cms模板建站
  • 网站开发工资多少钱抄袭别人网站的前端代码合法吗
  • 做书封面的网站建设实木餐桌椅移动网站
  • 各大网站的软文怎么做分销系统什么意思
  • 浙江网站建站网络网站是多少钱一年
  • asp 大型网站开发上海自动化仪表厂
  • 在线做编程题的网站wordpress二维码制作教程
  • 建设网页的公司aso优化
  • .jsp网站开发技术一分钟赚50元的游戏
  • 江山网站建设百度企业查
  • 做石材外贸用什么网站凡科建站有哪些弊端
  • 如何自己建站网站制作wordpress漏洞总结
  • 做外贸哪个网站比较好关于设计网站
  • 网站建设职能绩效目标如何自己建设网站
  • 娄底seo排名win10优化软件哪个好
  • python做问卷调查的网站wordpress自带图片