单体模式(Singleton)是经常为了保证应用程序操作某一全局对象,让其保持一致而产生的对象,例如对文件的读写操作的锁定,数据库操作的时候的事务回滚,
还有任务管理器操作,都是一单体模式读取的。创建一个单体模式类,必须符合三个条件:
1:私有构造函数(防止其他对象创建实例);
2:一个单体类型的私有变量;
3:静态全局获取接口

下面我写一个类,为了看是不是单体,就加了一个计数器,如果是同一个类,那么这个类的计数每次调用以后就应该自动加一,而不是重新建对象归零:

using System;
using System.Threading;namespace Singleton
{public class Singleton{private int _objCount;private Singleton(){Console.WriteLine("创建对象");}private static Singleton _objInstance;public static Singleton GetInstance(){return _objInstance ?? (_objInstance = new Singleton());}public void ShowCount(){_objCount++;Console.WriteLine($"单个对象被调用了{_objCount}次");}};public class ConsoleTest{public static void Main(string[] args){Console.WriteLine("开始执行单体模式");for (int i = 0; i < 5; i++){Singleton.GetInstance().ShowCount();}for (int i = 0; i < 10; i++){ApartmentTest.RunMoreThread();}Console.ReadLine();}};class ApartmentTest{public static void RunMoreThread(){Thread newThread = new Thread(new ThreadStart(ThreadSingleMethod));newThread.SetApartmentState(ApartmentState.MTA);Console.WriteLine($"ThreadState:{newThread.ThreadState},ApartmentState:{newThread.GetApartmentState()},ManagedThreadId:{newThread.ManagedThreadId}");newThread.Start();}public static void ThreadSingleMethod(){Singleton.GetInstance().ShowCount();}};

在这里可以看出,无论多线程还是单线程,每次都是使用的同一个对象,实现了单体。

多线程中,根据ManagedThreadId,可以看出不同的线路访问达到了单体。

转载于:https://www.cnblogs.com/Chary/p/No0000B3.html

[No0000B3].NET C# 单体模式(Singleton)相关推荐

  1. 单例/单体模式(Singleton)

    单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向 ...

  2. 单体模式singleton

    在c++实现单体模式和c#,java有些不同 .h class Param { public:static Param& GetIntance(){return m_param;}static ...

  3. 详细介绍javascript中的单体模式singleton(全面)

    一.单体模式描述 1.单体模式是javascript中最基本但又最有用的模式之一,他可能比其他任何模式都常用. 2.这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的 ...

  4. JavaScript单体模式

    单体模式是javascript中最基本但又最有用的模式之一,它可能比其他任何模式都更常用.这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变更进行访问.通过确保单体 ...

  5. 11单件模式(Singleton Pattern)

    创建型模式---单件模式(Singleton Pattern) 动机(Motivation):     在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确 ...

  6. javaScript几种设计模式之一——单体模式

    javaScript是一种弱类型.动态的.基于原型的语言,这种语言特性使得它非常容易. 甚至是普通的方式实现其中的一些模式. 单体模式的思想在于保证一个特定类仅有一个实例.这就意味着当您第二次使用同一 ...

  7. Java设计模式 创建模式-单态模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目 ...

  8. Java 单列模式(Singleton)

    单例模式(Singleton) 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:使得类的一个对象成为系统中的唯一实例. 如何保证一个类只有一个实例并且这个实例易于被访问呢? 我们都 ...

  9. 设计模式学习之单件模式singleton

    定义 单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的程序设计方法(根据实际情况,可能需要几个类实例).在某些情况下,这种程序设计方法是很有用处的. 单件模 ...

最新文章

  1. [pasecactf_2019]tornado_casino
  2. 被1.5W用户吐成翔的10大互联网产品,你躺枪了吗?
  3. sklearn朴素贝叶斯分类器_朴素贝叶斯原理
  4. elk收集nginx日志
  5. 《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结
  6. HuggingFace学习2:使用Bert模型训练文本分类任务
  7. bzoj 2844 子集异或和名次
  8. C#实现WebService服务 项目完整总结
  9. Python: ModuleNotFoundError解决方案
  10. 在线qmc0转换mp3工具_音乐格式转换
  11. 如何在VS2015创建C语言项目
  12. matlab仿真零中频接收机技术,经典又实用的零中频接收机的技术解决方案
  13. 漫画小程序支持流量主更新修复接口,自动采集资源,漫画源码漫画小程序源码简单即可发布
  14. 物联网监测之光纤振动传感器
  15. 常用公差配合表图_车间里常用的测量器具,别说没见过!
  16. px和毫米的换算_px与mm换算(px换成mm)
  17. redis通过key模糊搜索_Redis中关于Key的模糊查找
  18. 【项目管理】如何定义开放性问题和如何在项目中跟踪开放性问题
  19. vue+elemenUI项目,仿照京东商城,完成电商网站的订单中心
  20. web结课作业的源码——HTML+CSS+JavaScript仿oppo官网手机商城(1页)

热门文章

  1. Android签名与认证详细分析之二(CERT.RSA剖析)
  2. SQL Server 连接字符串
  3. Eclipse更改默认工作目录的方法
  4. 最后一战 源代码_我们的故事 | 一枚“铁渣”的一战成名
  5. css transition改动透明,使用CSS transition和animation改变渐变状态的实现方法
  6. ping命令linux软件包,linux下安装 ping 命令
  7. java cfg_如何使用antlr生成Java CFG(控制流图)?
  8. mysql数据库备份还原表_MySQL数据库及表的备份与还原_MySQL
  9. Java NIO网络编程之群聊系统
  10. python绘制双正切激活函数