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

相机网站建设规划书产品线下推广方式都有哪些

相机网站建设规划书,产品线下推广方式都有哪些,河北省住房城乡建设厅网站,购物网站界面设计策划目录 前言: 优点: 缺点: 饿汉式(静态变量方式) 懒汉式(线程不安全) 懒汉式(双重检查锁定) 推荐方式Lazy 总结: 前言: 这种模式涉及到一个单一的类&a…

目录

前言:

优点:

缺点:

饿汉式(静态变量方式)

懒汉式(线程不安全)

懒汉式(双重检查锁定)

推荐方式Lazy

总结:


前言:

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供 了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

单例设计模式分类两种:

  1. 饿汉式:类加载就会导致该单实例对象被创建
  2. 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建

优点:

  1. 以保证内存里只有一个实例,减少了内存的开销;
  2. 避免对资源的多重占用;
  3. 设置全局访问点,可以优化和共享资源的访问。

缺点:

  1. 一般没有接口,扩展困难;
  2. 在调试过程中,如果单例中的代码没有执行完,也不能模拟生成一个新的对象;
  3. 功能代码设计不合理的话,容易违背单一职责原则。

饿汉式(静态变量方式)

public class Singleton
{//私有构造方法private Singleton(){}//在成员位置创建该类的对象private static Singleton _sSingleton = new Singleton();//对外提供静态方法获取该对象public static Singleton GetSingleton(){return _sSingleton;}
}

该方式生命Singleton类型静态变量,并创建静态对象_sSingleton,该方式中_sSingleton对象是随着类的加载而创建,因为被静态修饰符所修饰,如果一直没有使用该对象就会造成内存的浪费。

懒汉式(线程不安全)

public class Singleton
{//私有构造方法private Singleton(){}//在成员位置创建该类的对象private static Singleton? _sSingleton;//对外提供静态方法获取该对象public static Singleton GetSingleton(){if (_sSingleton == null){_sSingleton = new Singleton();}return _sSingleton;}
}

在这种方式中声明Singleton类型静态变量后,并没有立刻对对象进行赋值,而是在调用GetSingleton时,对_sSingleton判断是否为第一次调用,如果是则赋值,因此实现了懒加载效果,但是如果是多线程环境,会出现线程安全问题。

懒汉式(双重检查锁定)

解决线程安全问题我们可以使用lock关键字

lock关键字在C#中用于创建临界区,它可以确保同时只有一个线程能够执行被它限制的代码块。使用方法如下:

lock (variable) {// 被保护的代码块。
}

如下,使用 lock 语句,确保当一次只有一个线程可以进入该代码段,从而防止在多线程环境下创建出多个 Singleton 实例。如果其他线程试图进入锁定的代码,那么他们将阻塞(即暂停执行),直到原来的线程退出锁定的代码。因此容易造成线程阻塞

public class Singleton
{//定义了一个静态只读的对象_lockObject,用于控制对实例对象的访问private static readonly object _lockObject = new object();private static Singleton? _sSingleton;private Singleton(){}public static Singleton Instance{get{lock (_lockObject){if (_sSingleton == null){_sSingleton = new Singleton();}return _sSingleton;}}}
}

推荐方式Lazy

使用Lazy<>是一种在C#中实现线程安全的单例模式的推荐方法,这种方式在.NET 4.0后开始提供。因为Lazy<>类型为线程安全并且延迟初始化提供了良好的支持。Lazy 会处理所有线程安全性问题,这是当前在C#中创建单例的首选方式。

public sealed class Singleton
{private static readonly Lazy<Singleton> lazy =new Lazy<Singleton>(() => new Singleton());public static Singleton Instance { get { return lazy.Value; } }private Singleton(){}
}

总结:

单例模式对外只能产生一个对象,饿汉模式是提前创建好这个对象,而懒汉模式是用的时候再创建,对比:从内存角度懒汉用的时候才创建,更节省内存;从速度的角度,饿汉提前创建好了,获取对象的时候速度会更快。

 

http://www.tj-hxxt.cn/news/107121.html

相关文章:

  • 网站建设便捷高端企业网站建设
  • 手机可以设计网站吗淘宝关键词怎么做排名靠前
  • 网站制作哪种好怎么建一个自己的网站
  • 做seo推广网站网络竞价推广托管公司
  • web前端开发实训心得体会官网seo是什么
  • 网站制作价格 上海无忧seo博客
  • 保定建站服务交换友情链接的注意事项
  • 手机网站制作哪家便宜优化法治化营商环境
  • 商丘市做网站北京搜索引擎优化seo专员
  • 安庆信德建设咨询有限公司网站竞价排名什么意思
  • 潍坊百度网站建设温州seo排名公司
  • 做任务网站建设如何搭建企业网站
  • 漳州房产网网店seo
  • 网站后期维护价格北京百度seo工作室
  • 茌平网页设计杭州seo薪资水平
  • 如何为公司做网站宽带营销案例100例
  • 唐山做网站的电话seo黑帽培训
  • 湘潭做网站 就问磐石网络营销技巧
  • 汽车保养网站模板百度关键词怎么优化
  • 万州做网站最近时事热点新闻评论及点评
  • 公司建一个网站多少钱2023年度最火关键词
  • 有没有做兼职的好网站seo流量软件
  • 高端h5网站开发企业关键词大全
  • 如何用dw做php网站代码seo收费标准
  • 月编程做网站腾讯疫情实时数据
  • 网盘做网站空间百度引流推广哪家好
  • 网站做贷款许可证广告优化师前景怎样
  • 惠州市注册公司企业网站优化报告
  • 域名在哪里申请正规网络公司关键词排名优化
  • 公司转让协议南宁百度seo软件