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

做网站必须要切图吗百度seo推广计划类型包含

做网站必须要切图吗,百度seo推广计划类型包含,wordpress导航链接,石家庄seo代理目录 前言: 优点: 缺点: 饿汉式(静态变量方式) 懒汉式(线程不安全) 懒汉式(双重检查锁定) 推荐方式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.hrbkazy.com/news/18489.html

相关文章:

  • www 上海网站建设seo优化好做吗
  • 用vs2010做免费网站模板下载地址详情页页面页面
  • 大连建设网站制作百度开户返点
  • pyhton做网站郑州网站运营
  • 做婚恋网站挣钱吗免费个人自助建站
  • WordPress怎么文章分类广东seo推广费用
  • 海口免费网站建设广州百度网站排名优化
  • 东莞虎门南栅医院广州seo公司排行
  • 网站互动化网络营销的概念和特征
  • 教育机构电商网站建设加盟一个万能的营销方案
  • 广东网络公司网站建设关键词检索
  • 动态手机网站怎么做网络搜索引擎有哪些
  • 新公司 做网站 流程销售方案
  • 宁夏建设工程交易中心网站百度中心人工电话号码
  • php响应式网站模板沈阳沈河seo网站排名优化
  • 哈尔滨模板做网站找客户资源的网站
  • 做淘宝客服的网站最近的疫情情况最新消息
  • 南京广告公司株洲百度seo
  • 使用wampserver做响应式网站手机优化助手下载
  • 全屋定制装修加盟网兰州网站优化
  • 造价员证在哪个网站上查询怎么做电商创业
  • 长春做网站推广ks免费刷粉网站推广
  • 运动器材网站建设百度站长资源
  • 紫色个人网站模板百度热搜榜排名今日头条
  • 做网站需要几天腾讯朋友圈广告投放价格
  • wordpress页数seo免费视频教程
  • 四川建设网站信息查询中心百度关键词推广怎么收费
  • 中国建设银行官网站诚聘英才网络营销和电子商务区别
  • 网站开发项目延期说明交换友情链接吧
  • 国内做企业英文网站用什么cms网站建设找哪家公司好