摘要:using System;public class Singleton{// 私有静态变量,存储单例实例private static Singleton _instance;// 静态同步锁,用于线程安全private static readonly obje
单例模式(Singleton Pattern)是一种设计模式,保证一个类仅有一个实例,并提供一个全局访问点。
以下是线程安全、惰性初始化的单例模式实现:
using System;public class Singleton{// 私有静态变量,存储单例实例private static Singleton _instance;// 静态同步锁,用于线程安全private static readonly object _lock = new object;// 私有构造函数,防止外部实例化private Singleton{Console.WriteLine("Singleton instance created.");}// 公共静态方法,用于获取单例实例public static Singleton Instance{get{// 双重检查锁定if (_instance == null){lock (_lock){if (_instance == null){_instance = new Singleton;}}}return _instance;}}// 示例方法public void DisplayMessage(string message){Console.WriteLine($"Message from Singleton: {message}");}}class Program{static void Main(string args){// 获取单例实例Singleton singleton1 = Singleton.Instance;Singleton singleton2 = Singleton.Instance;// 使用实例方法singleton1.DisplayMessage("Hello, Singleton!");// 验证两个实例是否相同Console.WriteLine($"Are instances equal? {ReferenceEquals(singleton1, singleton2)}");}}Singleton instance created.Message from Singleton: Hello, Singleton!Are instances equal? True私有构造函数:阻止外部直接创建实例。只能通过类的静态方法访问实例。静态字段存储唯一实例:_instance 保存了单例对象,保证在整个应用程序中唯一。线程安全性:使用 lock 确保多线程环境下,只有一个线程能初始化单例对象。双重检查锁定(Double-Checked Locking)提高了性能,只有在实例未创建时才加锁。惰性初始化:单例对象只在首次访问时创建,避免不必要的内存开销。在 C# 中,静态类型具有线程安全性,可以进一步简化实现:
public class Singleton{// 静态只读变量,存储单例实例private static readonly Singleton _instance = new Singleton;// 私有构造函数private Singleton{Console.WriteLine("Singleton instance created.");}// 公共静态属性获取实例public static Singleton Instance => _instance;public void DisplayMessage(string message){Console.WriteLine($"Message from Singleton: {message}");}}来源:面试八股文
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!