C# 设计模式之单例模式(懒汉模式、饿汉模式、静态内部类模式)
C# 设计模式之单例模式(懒汉模式、饿汉模式、静态内部类模式)
应用场景:在整个软件运行生命周期内,一个类只允许一次实例化,例如数据库连接池的连接对象创建;通过使用单例模式来避免反复创建连接对象,从而降低非必要性能浪费
1.Main 方法代码
class Program{static void Main(string[] args){单例模式之懒汉模式-延迟加载方案LazySingleton instance = LazySingleton.getInstance();LazySingleton instance1 = LazySingleton.getInstance();Console.WriteLine(instance == instance1);单例模式之饿汉模式HungrySingleton instance2 = HungrySingleton.getInstance();HungrySingleton instance3 = HungrySingleton.getInstance();Console.WriteLine(instance2 == instance3);//单例模式之静态内部类模式InnerClassSignleton instance4 = InnerClassSignleton.getInstance();InnerClassSignleton instance5 = InnerClassSignleton.getInstance();Console.WriteLine(instance4 == instance5);Console.ReadKey();}}
2.各模式类
// 懒汉模式类class LazySingleton{private static readonly object locker = new object();private volatile static LazySingleton instance;//volatile 关键字,防止字节码执行阶段CLR或者CPU重排序执行private LazySingleton(){}public static LazySingleton getInstance(){if (instance == null){lock (locker){if (instance == null){instance = new LazySingleton();}}}return instance;}}//饿汉模式类class HungrySingleton{private static HungrySingleton instance = new HungrySingleton();private HungrySingleton() { }public static HungrySingleton getInstance(){return instance;}}//静态内部类class InnerClassSignleton{private static class InnerClassHolder{public static InnerClassSignleton instance = new InnerClassSignleton();}private InnerClassSignleton() {if (InnerClassHolder.instance != null) {throw new Exception("单例模式不允许多个实例");}}public static InnerClassSignleton getInstance(){return InnerClassHolder.instance;}}
C# 设计模式之单例模式(懒汉模式、饿汉模式、静态内部类模式)相关推荐
- 单例模式懒汉、饿汉和登记
转载自 JAVA设计模式之单例模式 本文继续介绍23种设计模式系列之单例模式. 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记 ...
- 【C++】单例模式(懒汉、饿汉)
1.什么是单例模式? 顾名思义,单例模式就是在这个单例类确保只有一个对象被创建.也就是说这个类只能实例化一个对象. 特征:1.单例类最多只能有一个实例: 2.单例类必须自己创建自己唯一的实例: 3.单 ...
- java 单例模式 懒汉和饿汉
单线程下的单例模式 定义: 确保一个类只有一个实例,并提供一个全局访问点. 单例代码: package wfb.pattern;public class Singleton {private stat ...
- 单例模式——懒汉与饿汉
前言:设计模式是在不断编程中前人所总结的"兵书",将可能面对的大部分编程需求归纳总结为固定的模式,而单例模式则是最常见的设计模式之一. 设计模式 设计模式(Design Patte ...
- Java多线程案例之单例模式(懒汉,饿汉,枚举)
⭐️前面的话⭐️ 本篇文章将介绍Java多线程中的几个典型案例之单例模式,所谓单例模式,就是一个类只有一个实例对象,本文将着重介绍在多线程的背景下,单例模式的简单实现.
- Java单例模式--------懒汉式和饿汉式
Java单例模式--------懒汉式和饿汉式 单件模式用途: 单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用. 单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统 ...
- 【设计模式:单例模式】单例模式01:饿汉模式
单例模式:饿汉模式 正文开始@Assassin 目录: 单例模式:饿汉模式 1. 什么是设计模式? 2. 单例设计模式: 2.1 什么是单例模式? 2.2 单例模式应用实例: 1. 什么是设计模式? ...
- 单例模式的原理/懒汉模式/饿汉模式以及不同版本的单例模式程序
单例模式 单例模式定义 懒汉模式与饿汉模式 懒汉模式 饿汉模式 懒汉模式和饿汉模式的区别 懒汉模式的不同版本 版本一 版本二 版本三 版本四 单例模式定义 保证一个类仅有一个实例,并提供一个该实例的全 ...
- java单例设计模式懒汉_Java设计模式之单例设计模式(懒汉、饿汉)
[toc] Java设计模式之单例设计模式(懒汉.饿汉) 相信面试过的初中级Java开发的朋友可能都有遇到过单例设计模式的笔试题吧,如果之前没有背下来或者不理解,可以看看下面这篇文章,应该足够应付笔试 ...
- 设计模式 懒汉和饿汉
懒汉和饿汉模式主要涉及是一个问题, 就是这个对象是我送过去给你,还是你自己来拿. 差别: 饿汉模式下,初始化已经调用了构造方法,直接得到了对象. 懒汉模式下的初始化没有得到对象,因此需要调用方法得到. ...
最新文章
- hihocoder 1152 Lucky Substrings
- 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
- Linux nohup命令用法详解
- vivo手机解锁工具_屏幕指纹优势凸显,vivo持续研发致力打造全屏指纹解锁
- 四五月份:关键词是沟通、绘画和SQL
- 远程管理服务器的具体操作方法
- js输出100以内的质数_Python 计数质数
- server接收dtu透传代码_Swoole学习笔记二:初探server与client(Client同步)
- 电解槽行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- python实践项目(十一)
- 使用metamask发起交易的时候,交易卡在pending了怎么办?
- echars 南丁格尔图 构建与配置
- 怎么用js代码画一棵树,附带下载链接
- 在线AI日语视频音频翻译中文字幕
- Obsidian+SyncTrayzor打造个人文档云同步平台
- 系统调用是什么,你用过哪些系统调用
- LQR控制器——简单实现与仿真
- Elasticsearch: date时间数据格式踩过的坑
- 【网络】应用层-HTTP协议
- 杭州(含嘉兴,绍兴,金华,湖州,义乌)Uber优步司机奖励政策(1月25日~1月31日)...
热门文章
- 大数据揭示网友新年愿望“十大热词”
- 数据结构课程设计 - 超市商品管理系统
- Weibull Distribution韦布尔分布的深入详述(3)分析案例建模实践
- JDK和JRE的含义和作用
- 一文看懂“巨鲸”被盗2亿元数字货币始末,找回几无可能
- 最新单片机毕设100例(五)
- 最常见的客服系统功能
- 【LeetCode105和106】先序和中序构造二叉树(106是中后序构树)
- nginx下TCP负载均衡配置
- bee(github.com/beego/bee)源码分析