下面我将为你详细介绍“C# 设计模式之单例模式归纳总结”的攻略。
什么是单例模式?
单例模式是指保证一个类只有一个实例,并提供一个访问类唯一实例的全局访问点。
单例模式的优缺点
优点
- 提供唯一实例,避免了重复创建,节省了系统资源。
- 可以控制实例化的数量,减小系统与外界的耦合程度。
- 提供了全局访问点,方便对唯一实例的访问。
缺点
- 单例类的职责过重,一旦修改可能会对整个系统造成影响。
- 不易扩展,因为单例模式只能产生一个实例,所以其适用范围受到一定的限制。
单例模式的实现
饿汉式单例模式
饿汉式单例模式在类被实例化的时候就已经创建好了唯一的实例,所以又被称为静态单例模式。
示例代码:
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton GetInstance()
{
return instance;
}
}
懒汉式单例模式
懒汉式单例模式在类被第一次引用的时候才会创建唯一实例,所以又被称为动态单例模式。
示例代码:
public class Singleton
{
private static Singleton instance = null;
private Singleton() {}
public static Singleton GetInstance()
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
}
线程安全的懒汉式单例模式
在懒汉式单例模式中,如果有多个线程同时访问,就可能导致创建多个实例的情况,这样就不再保证单例的唯一性了。为了解决这个问题,可以使用锁机制,来保证线程安全。
示例代码:
public class Singleton
{
private static Singleton instance = null;
private static readonly object syncLock = new object(); //锁对象
private Singleton() {}
public static Singleton GetInstance()
{
lock(syncLock)
{
if(instance == null)
{
instance = new Singleton();
}
}
return instance;
}
}
总结
单例模式是开发中比较常用的设计模式之一,通过保证一个类只有一个实例,能够简化对象的管理,提高系统的性能。在实现单例模式时可以采用静态单例、动态单例和线程安全的懒汉单例等不同的方式,选择适合的方式应该根据实际的需求来决定。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 设计模式之单例模式归纳总结 - Python技术站