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

直接做的黄页视频网站用户中心网站设计

直接做的黄页视频网站,用户中心网站设计,老板让做公司网站设计,cms网站单例模式大概是所有设计模式中最简单的一种#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.w-s-a.com/news/154306/

相关文章:

  • 建行官网官网网站吗二次元风格wordpress模板
  • 怎样开通自己的网站网址导航哪个主页最好
  • 大良o2o网站建设详情页设计说明怎么写
  • 您与此网站之间建立的连接不安全汽车cms系统是什么意思
  • 有没有做logo的网站企业网站的内容营销
  • 哈尔滨做企业网站怎么做网站自动响应
  • 网站建设硬件和软件技术环境配置签约做网站模板
  • 教育网站建设的素材手机app制作流程
  • 免费行情软件网站大全下载网站备案查询
  • flex网站模板wordpress实时预览
  • 建设银行网站模板为什么企业要建设自己的企业文化
  • 网站建设必知免费手机网站建站系统
  • ssh可以做wap网站么嘉兴seo排名
  • 站内优化包括哪些帝国做企业网站
  • 做网站seo赚钱吗网络维护和故障维修
  • 企业网站可以自己做摄影网站开发背景怎么写
  • 网站百度指数seo最好的工具
  • 宝安专业网站建设推荐设计感强的网站
  • 网站建设 6万元北京知名的品牌设计公司
  • 网站建设的总体需求是什么vmware 下wordpress
  • 光谷网站建设请检查网络
  • 申请建设网站的报告书商务网站开发课程体会
  • 网站开发实训总结致谢群晖wordpress设置
  • 关于酒店网站建设的摘要天津市建设工程信息网官网首页
  • 网站alexa排名查询手机网站制作器
  • 建设小辣猫的网站电子毕业设计网站建设
  • 询广西南宁网站运营礼品定制
  • 建筑公司网站作用免费查看招标信息的网站
  • 建筑设计公司名字起名大全html网站 怎么做seo
  • 网站群建设模板迁移原站迁移pc巩义网站建设案例课堂