C#设计模式:单例模式
2021-04-25 21:54
标签:main 避免 led c# col 应该 on() 设计 pre 在c#中的单例模式是指在一个AppDomain中只会存在一个经过实例化的对象。单例模式的作用的避免创建更多本来不用创建的对象,因为有一些对象在使用上没有必要创建那么多,一个就够了。单例模式实现起来的话要遵循一下几个特点: 根据这几个特点,首先是方法1: 这样,调用Singleton的静态属性Instance可以获取这个对象的唯一的实例,但是在多线程访问中由于该操作不是原子的,还是会可能创建多个实例,所以应该在这个静态属性的逻辑中加入锁(lock),这样一来,问题解决了,但是锁对性能的损耗不能忽视,于是,又出现了没有锁的并且性能较好的一种方法: 具体方法是加入一个静态的构造函数,静态函数的作用在于初始化类级别的静态属性或字段,这种方法完美的解决了锁带来的性能损耗问题同时又实现了单例。 我的原则是有一个好用的就没必要去展示其他不好用的例子了,用这个就够了。 C#设计模式:单例模式 标签:main 避免 led c# col 应该 on() 设计 pre 原文地址:http://www.cnblogs.com/pangjianxin/p/7911386.html. 单例类都只有一个private的无参构造函数
. 类声明为sealed(不是必须的)
. 类中有一个静态变量保存着所创建的实例的引用
. 单例类会提供一个静态方法或属性来返回创建的实例的引用(eg.GetInstance)
public class Singleton
{
private static Singleton _instance;
private Singleton()
{
}
public static Singleton Instance => _instance ?? (_instance = new Singleton());
}
public class AnotherSingleton
{
private static readonly AnotherSingleton _instance = new AnotherSingleton();
static AnotherSingleton()
{
}
private AnotherSingleton()
{
}
public static AnotherSingleton Instance
{
get
{
return _instance;
}
}
}