只能生成一个实例的类是为了实现单例模式的类型。

加同步锁前后两次判断实例是否已存在

我们只是在实例还没有创建之前加锁操作,以保证只有一个线程创建出实例。而当实例已经创建之后,我们已经不需要再做加锁操作了。

public sealed class Singleton
{private Singelton(){}
private static object syncObj = new object();private static Singleton instance = null;
public static Singleton Instance
{get{if (instance == null){locak(syncObj){if (instance == null)instance = new Singleton();             }}return instance;}
}
}

利用静态构造函数

public seled class Singleton
{private Singelton(){}private static Singleton instance = new Singleton();public static Singleton Instance{get{return instance;}}
}

由于C#中调用静态构造函数时初始化静态变量,.NET运行时能够保证只调用一次静态构造函数,这样我们就能够保证只初始化一次instance。C#中调用静态构造函数的时机不是由程序员掌控的,而是当.NET运行时发现第一使用一个类型的时候自动调用该类型的静态构造函数。在Singleton中,实例instance并不是第一次调用属性Singleton.Instance的时候创建的,而是在第一次用到Singleton的时候就会被创建。

实现按需创建实例

public sealed class Singleton
{Singleton(){}public static Singleton Instance;{get{return Nested.instance;}}class Nested{static Nested(){}internal static readonly Singleton instance = new Singleton();}
}

剑指offer学习--实现单例模式相关推荐

  1. 【剑指Offer学习】【全部面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...

  2. 【剑指Offer学习】【面试题66:矩阵中的路径】

    [剑指Offer学习][面试题66:矩阵中的路径] 题目:请设计一个函数,用来推断在一个矩阵中是否存在一条包括某字符串全部字符的路径.路径能够从矩阵中随意一格開始.每一步能够在矩阵中间向左.右.上.下 ...

  3. 【leetcode】 剑指 Offer学习计划(java版本含注释)(上)

    目录 前言 第一天(栈与队列) 剑指 Offer 09. 用两个栈实现队列(简单) 剑指 Offer 30. 包含min函数的栈(简单) 第二天(链表) 剑指 Offer 06. 从尾到头打印链表(简 ...

  4. python 剑指offer 学习之路(二)

    剑指offer 学习之路 合并两个排序的链表 树的子结构 顺时针打印矩阵 包含min函数的栈 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 数组中出现次数超过 ...

  5. java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...

    数值的整数次方 代码实现: [java] view plaincopyprint? public class Test11 { /** * 实现函数double Power(double base, ...

  6. 剑指Offer学习笔记(3)——解决面试题的思路

    容易实现的算不上梦想,轻易放弃的算不上诺言. 要想成功得敢于挑战,有了梦想才有美好的明天! 前言:面试的时候我们经常遇到难题,画图.举例子和分解能够很好的帮助我们解决问题和细化问题. 一.画图使得抽象 ...

  7. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】

    题目:一个整型数组里除了两个数字之外.其它的数字都出现了两次,请敲代码找出这两个仅仅出现一次的数字. 要求时间复杂度是O(n),空间复杂度是O(1). 举例说明 比如输入数组{2, 4, 3, 6, ...

  8. 剑指offer 学习笔记 和为s的数字

    面试题57:和为s的数字. 1.输入一个递增的数组和一个数字s,在数组中查找两个数,使它们的和正好是s,输出一对这样的数即可. 即使是不好的直观解法,想到后也要告诉面试官,这样显得思维敏捷,如一种时间 ...

  9. 目录 | 数据结构与剑指Offer系列推文合集

    [目录合集]| 作者 / Edison Zhou C#刷数据结构+剑指Offer 不知不觉,C#刷剑指Offer的系列推文就结束了,今天就把它们整理成目录合集.此外,考虑到剑指Offer和数据结构的关 ...

最新文章

  1. TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程
  2. LeetCode 309. Best Time to Buy and Sell Stock with Cooldown--Java解法-卖股票系列题目
  3. Java多线程学习笔记之二缓存
  4. SSM实现个人博客-day01
  5. 【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。
  6. 二叉搜索树的最小绝对差
  7. element ui 前台模板_SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示...
  8. C# webservice服务跟踪调试方法(转)
  9. 符号库匹配不对的原因_中频点焊机焊接螺母有流渣是什么原因造成的?-苏州安嘉...
  10. android常犯错误记录(一)
  11. [转]几种软件测试工具
  12. WebLogic下部署war包
  13. Numpy系列(六)常用的数组合并操作
  14. 用户流量红利消退的下半场,淘宝如何保持高速增长?
  15. 脂肪肝青睐“三围”人士 不吃早餐容易诱发
  16. 2020.8.25课堂笔记(Linux入门、常用命令)
  17. 4.2 Hive SQL
  18. GDOUCTF比赛WEBCRYPTO方向全解!!
  19. HTML音频视频标签
  20. 人工智能在医药行业的应用

热门文章

  1. Ajax——同步请求与异步请求
  2. 远程传输大文件使用什么平台好呢?
  3. OB38R08T1读24C64程序
  4. 3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他
  5. 在Matlab R2019版本上分析simulink模型的BODE图、阶跃响应、单位脉冲响应
  6. 三维图形的平移,旋转与错切
  7. 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真
  8. 希尔排序解析实例实现
  9. 豆瓣电台WP7客户端 开发记录5
  10. h5引入json_H5页面内使用JSON动画