单例模式

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace BeginOfCSharp.DesignMode
 8 {
 9     /// <summary>
10     /// 单例模式
11     ///     单例类只能有一个实例,必须自己创建自己的唯一实例,必须给其它所有对象提供这一实例
12     ///     单例模式拥有一个私有构造函数,使用户无法通过new来创建其它的实例
13     ///                    静态私有成员变量,负责存储实例
14     ///                    静态公有方法,负责检验并且实例化
15     ///     单例可以实现“同步”的效果,如:避免了多个用户同时注册时,自动生成的主键重复(只有一个地方能分配下一个主键号)
16     /// </summary>
17     class Singleton
18     {
19         private static Singleton instance;
20
21         protected Singleton() { }
22
23         /// <summary>
24         /// 实例化
25         /// </summary>
26         /// <returns>返回唯一实例</returns>
27         public static Singleton GetInstance()
28         {
29             if(instance == null)
30                 instance = new Singleton();
31             return instance;
32         }
33
34         static void Main(string[] args)
35         {
36             Singleton s1 = Singleton.GetInstance();
37             Singleton s2 = Singleton.GetInstance();
38             //检测这s1和s2是否是同一个实例(结果是True)
39             Console.WriteLine(s1 == s2);
40             Console.ReadLine();
41         }
42     }
43 }

一般单例

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace BeginOfCSharp.DesignMode
 8 {
 9     /// <summary>
10     /// 利用.net平台优势实现的单例
11     ///     代码量少,解决了线程问题带来的性能损失
12     ///     sealed修饰类,所以该类不能被继承
13     ///     instance成员变量在声明的时候就被初始化(所以无法实现延迟初始化)
14     ///     public readonly修饰该instance,保证该变量以后不会再次实例化
15     /// </summary>
16     sealed class SingletonNet
17     {
18         private SingletonNet() { }
19         public static readonly SingletonNet instance = new SingletonNet();
20
21         static void Main(string[] args)
22         {
23             SingletonNet s1 = SingletonNet.instance;
24             SingletonNet s2 = SingletonNet.instance;
25             //检测这s1和s2是否是同一个实例(结果是True)
26             Console.WriteLine(s1 == s2);
27             Console.ReadLine();
28         }
29     }
30 }

利用.net平台优势实现的单例

转载于:https://www.cnblogs.com/coqn/archive/2013/05/31/DesignMode.html

C#版常用设计模式入门相关推荐

  1. 【2018版】Docker入门视频课程-汤小洋-专题视频课程

    [2018版]Docker入门视频课程-217人已学习 课程介绍         本课程以通俗易懂的方式讲解Docker容器技术,适合初学者的教程,让你少走弯路! 掌握Docker容器技术,教学全程采 ...

  2. Mac版R语言入门(一)R语言入门操作

    文章更新于2023年1月29日: 视频教程--微信公众号:R语言数据分析与实践                      bilibili: R语言数据分析与实践 CSDN:ZhenniLi 第一集: ...

  3. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  4. 2016 版 Laravel 系列入门教程(一)

    https://www.golaravel.com/post/2016-ban-laravel-xi-lie-ru-men-jiao-cheng-yi/ 2016 版 Laravel 系列入门教程(一 ...

  5. 打死都要记住!微服务架构的常用设计模式!

    作者:duanxz 来源:cnblogs.com/duanxz/p/3514895.html 大家好,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许我休息一下哈).今天跟大家分享微服务架 ...

  6. 原型模式的应用场景_前端常用设计模式

    求关注 前端常见的设计模式主要有以下几种:1. 单例模式2. 工厂模式3. 策略模式4. 代理模式5. 观察者模式6. 模块模式7. 构造函数模式8. 混合模式 单例模式 这种设计模式的思想是确保一个 ...

  7. 设计模式入门(策略模式)

    [0]README 0.1)本文部分文字描述转自 "head first 设计模式",旨在学习 设计模式入门(策略模式) 的基础知识: 0.2)本文章节4和5的source cod ...

  8. Java常用设计模式————原型模式(一)

    介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...

  9. 模板设计模式_C常用设计模式——模板方法模式

    C常用设计模式系列,我们是以策略模式开头的,因为它太简单太实用了,本篇讲的模板方法模式(Template Method),同样简单又实用.模板方法模式堪称局部代码分离关注点的神器. 代码里有个流程A, ...

  10. 23种常用设计模式的UML类图

    23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...

最新文章

  1. Shiro总是将我重定向到login.jsp
  2. 使用 Equinox 开发 OSGi 应用程序
  3. windbg 查看结构体_用WinDbg进行调试
  4. mysql分组失效_请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?...
  5. MyEclipse 10, 2013, 2014 破解、注册码
  6. 商家中心设计 多sku商品发布_商家后台怎么设计商品信息?
  7. 赵娜计算机,新学期 新起点 新征程——计算机学院2016级召开系列年级工作会议...
  8. 简单谈一谈git小乌龟操作
  9. 计算机开机今入dos系统,开机如何进入dos系统_如何进入纯dos系统
  10. Windows无法启动 VMware Workstation server服务解决方法
  11. matlab在机械手臂中基础,关于MATLAB中的机械臂算法的分析和介绍
  12. 凡诺cms2.1文件包含漏洞分析
  13. qt中将按钮指向的鼠标变成手型
  14. 有特点的3D网络拓扑图
  15. JDK8之ConcurrentHashMap源码解读
  16. html图片不能拖动,关于html5图片拖动的代码的问题?
  17. 游戏任务设计(4):Puzzle、Challenge和任务叙事
  18. [作业] 六角填数问题
  19. 深入剖析Netty之定时任务实现
  20. 外包程序员:软件开发人员派遣进行IT人员驻场开发的好处有哪些?

热门文章

  1. 使用U-Net分割方法进行癌症诊断
  2. Faster rcnn相关文章研究
  3. String赋值方式
  4. mysql安装设置数据目录下_Windows下修改MySQL安装目录和MySQL数据目录
  5. python是如何进行内存管理的_Python是如何进行内存管理的?
  6. Kubernetes 小白学习笔记(26)--kubernetes的运维-查看事件和容器日志
  7. 微信小程序云开发-时间存储、转换、比较
  8. Ubuntu16.04 安装Apache2和php后,无法访问phpinfo.php
  9. linux xfs 字体服务,Linux下Python和Tkin的字体管理
  10. JavaWeb中的问题 ---- Servlet和Jsp