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

空间站 参考消息国内做网站上市公司

空间站 参考消息,国内做网站上市公司,免扣连线矢量图,新媒体运营怎么自学C#设计模式学习笔记-单例模式 最近在学设计模式#xff0c;学到创建型模式的时候#xff0c;碰到单例模式#xff08;或叫单件模式#xff09;#xff0c;现在整理一下笔记。 在《Design Patterns#xff1a;Elements of Resuable Object-Oriented Software》中的定义是学到创建型模式的时候碰到单例模式或叫单件模式现在整理一下笔记。   在《Design PatternsElements of Resuable Object-Oriented Software》中的定义是Ensure a class only has one instanceand provide a global point of access to。它的主要特点不是根据客户程序调用生成一个新的实例而是控制某个类型的实例数量-唯一一个。《设计模式-基于C#的工程化实现及扩展》王翔。也就是说单例模式就是保证在整个应用程序的生命周期中在任何时刻被指定的类只有一个实例并为客户程序提供一个获取该实例的全局访问点。   一、经典模式 public class Singleton{ private static Singleton instance; private Singleton() { } public static Singleton GetInstance() { if(instancenull) { instancenew Singleton(); } return instance; }}   解析如下   1首先该Singleton的构造函数必须是私有的以保证客户程序不会通过new操作产生一个实例达到实现单例的目的   2因为静态变量的生命周期跟整个应用程序的生命周期是一样的所以可以定义一个私有的静态全局变量instance来保存该类的唯一实例   3必须提供一个全局函数访问获得该实例并且在该函数提供控制实例数量的功能即通过if语句判断instance是否已被实例化如果没有则可以同new创建一个实例否则直接向客户返回一个实例。   在这种经典模式下没有考虑线程并发获取实例问题即可能出现两个线程同时获取instance实例且此时其为null时就会出现两个线程分别创建了instance违反了单例规则。因此需对上面代码修改。   二、多线程下的单例模式   1、Lazy模式 public class Singleton{ private static Singleton instance; private static object _locknew object(); private Singleton() { } public static Singleton GetInstance() { if(instancenull) { lock(_lock) { if(instancenull) { instancenew Singleton(); } } } return instance; }}   上述代码使用了双重锁方式较好地解决了多线程下的单例模式实现。先看内层的if语句块使用这个语句块时先进行加锁操作保证只有一个线程可以访问该语句块进而保证只创建了一个实例。再看外层的if语句块这使得每个线程欲获取实例时不必每次都得加锁因为只有实例为空时即需要创建一个实例才需加锁创建若果已存在一个实例就直接返回该实例节省了性能开销。   2、饿汉模式   这种模式的特点是自己主动实例。 public sealed class Singleton{ private static readonly Singleton instancenew Singleton(); private Singleton() { } public static Singleton GetInstance() { return instance; }}   上面使用的readonly关键可以跟static一起使用用于指定该常量是类别级的它的初始化交由静态构造函数实现并可以在运行时编译。在这种模式下无需自己解决线程安全性问题CLR会给我们解决。由此可以看到这个类被加载时会自动实例化这个类而不用在第一次调用GetInstance()后才实例化出唯一的单例对象。 http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html转载于:https://www.cnblogs.com/chengjun/p/4955867.html
http://www.huolong8.cn/news/213175/

相关文章:

  • 济南住房和城乡建设局网站上海百度seo牛巨微
  • 手机h5免费模板网站wordpress 制作小工具
  • 企业网站怎么做的好看网站降权后 换域名
  • 怎么做宣传seo快速排名易下拉霸屏
  • 广西城乡住房建设厅网站首页国内可用的免费云端服务器
  • 网站编辑器室内装修效果图制作
  • 白云网站建设多少钱服务器与网站的关系
  • 建设网站需要什么东西大连淘宝网站建设
  • 建设网站企业公司服装设计公司简介
  • 贵阳seo技术爱站网seo工具查询
  • 公司网站域名是什么意思怎么学好网站建设
  • 做网站需要哪些技术知乎莆田网站 建设
  • 网站被k怎么闵行网站搭建哪里有
  • 做网站怎么投放广告怎样买空间做网站
  • 网站制作常见问题外贸网站建设教程
  • 厨具 技术支持东莞网站建设福州网站seo推广优化
  • 门户网站做商城的电商免费推广的方式有几种
  • 固安网站建设wordpress文章模板编辑器
  • 汕头网站建设方案优化怎样做服务型网站
  • 网站开发技术路线图网站建设详细合同范本
  • 营销型网站建设论文淘宝网官方网
  • 亳州网站开发安装wordpress 空白页
  • 做营销型网站公司wordpress和shopify区别
  • 百度云服务器做asp网站华为公司网站建设方案
  • 1做网站推广wordpress管理员评论在哪儿设置
  • 如何做网站公众号推广wordpress 商城主题
  • 南昌建设医院网站在哪个网站做外快设计
  • 怎么去跟客户谈网站建设h5游戏平台入口
  • 网站建设如何开票企业服务网站建设方案
  • 自己做的视频网站如何赚钱吗做网站软件_手机