C#单例模式

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3._3._6_单例模式
{
    public class Singleton
    {
        private static Singleton s_instance;
        private int _state;
        private Singleton(int state) 
        { 
            _state = state;
        }
        public static Singleton Instance{
            get => s_instance ?? (s_instance = new Singleton(42));
        }
    }
}

这段代码是一个C#语言实现的单例模式示例。单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。

概括性总结

  • 类定义:Singleton 类实现了单例模式。

  • 私有静态实例:private static Singleton s_instance用于存储类的唯一实例。

  • 私有构造函数:private Singleton(int state) 确保外部无法直接创建类的实例。

  • 公共静态属性:public static Singleton Instance 提供全局访问点,确保全局只有一个实例。

详细解析

  1. 命名空间:namespace _3._3._6_单例模式 定义了类的命名空间,用于组织代码。

  2. 类定义:

  • public class Singleton 定义了一个名为 Singleton 的公共类。
  1. 私有静态实例:
  • private static Singleton s_instance;

  • 这是一个静态成员,用于存储类的唯一实例。它是私有的,这意味着它只能在类内部被访问和修改。

  1. 私有构造函数
  • private Singleton(int state)

  • 这是一个私有构造函数,它接受一个整型参数 state。由于构造函数是私有的,因此外部代码无法直接创建 Singleton 类的实例。

  • 在构造函数内部,_state = state; 将传入的 state 值赋给 _state 成员变量。

  1. 公共静态属性:
  • public static Singleton Instance

  • 这是一个公共静态属性,用于提供对唯一实例的访问。

  • get => s_instance ?? (s_instance = new Singleton(42));

  • 这个属性使用了 C# 的空合并运算符 (??)。当 s_instance 为 null时,它会创建一个新的 Singleton实例,并将42作为状态传递给构造函数。如果s_instance` 已经存在,则直接返回该实例。

  • 这确保了无论多少次调用 Instance 属性,都只有一个 Singleton 实例。

相关推荐
浮游本尊1 小时前
Java学习第22天 - 云原生与容器化
java
渣哥3 小时前
原来 Java 里线程安全集合有这么多种
java
间彧3 小时前
Spring Boot集成Spring Security完整指南
java
间彧3 小时前
Spring Secutiy基本原理及工作流程
java
Java水解4 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆6 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学7 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole7 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊7 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端